Skip to main content

Keap

CRM

The Keap connector reads and writes contacts, companies, opportunities and tasks through Keap's REST v2 API. Keap was formerly Infusionsoft.

When to use it​

  • You move contacts, companies and opportunities between Keap and another CRM.
  • You push new customers from a database into Keap as contacts, or pull won opportunities into a warehouse.
  • You read records, transform them, and write the results back with Update.

What you need​

  • An app in the Keap developer portal, with its client ID and client secret.
  • A Keap account that can approve the app.

Keap offers OAuth only. The connector uses Keap's REST v2 API, not the v1 REST API or the XML-RPC API, so a legacy API key does not apply.

Set up in Keap​

  1. Go to the Keap developer portal and sign in with the account that owns the app.
  2. Create an application and open its keys.
  3. In DataLug, add a Keap connection and copy the Redirect URI.
  4. Paste it into the app's redirect URI exactly.
  5. Copy the app's Client ID and Client Secret into DataLug.
  6. Leave Scopes as full.
  7. Click Connect Keap and approve access. DataLug stores the refresh token.
  8. Click Test connection.

Keap requires an HTTPS redirect URI.

Scopes​

Keap accepts one scope value, full. Keap's documentation states that "the only current valid value is scope=full".

Connect​

The connection form lists its steps on the left. Open any step from that list. The Environments step holds the values that differ per environment.

Test connection is in the form footer. Beside it, Test against picks Base, the connection as saved, or an environment, whose values are applied first.

FieldStepWhat to enter
Auth TypeAuthenticationOAuth. Keap offers OAuth only.
Client IDAuthenticationFrom your app in the Keap developer portal.
Client SecretAuthenticationFrom the same app.
Redirect URIAuthenticationFilled in. Copy it into the app's redirect URI.
Refresh TokenAuthenticationFilled in by Connect Keap.
ScopesOptionsfull.

Stored secrets are never sent back to the browser. To change one, use Replace.

Supported operations​

Objects. Contact, Company, Opportunity and Task.

ActionNodeOperations
Query (Source)Source nodeQuery, with an optional Limit
Load (Target)Load nodeInsert, Update, Delete

Writes go one record per request. Update and Delete match on the Keap record id. Custom fields are read from Keap's v2 model endpoint for each object.

Not supported: Upsert, a source filter, Notes.

Limits​

Keap connections are not paced unless you set Requests per period on the API limits card. Keap reports remaining calls in the x-keap-tenant-throttle-available and x-keap-product-quota-available response headers. See Keap's throttles and quotas.

Page size is at most 100.

The API limits card on the connection form is collapsed by default. Every field on it is optional, and a blank field uses the default shown below it.

SettingWhat it doesDefault
Requests per period, PeriodPaces outgoing calls. Set both to throttle.No throttle, or the rate shown on the card.
Page sizeRows per request. A larger value is reduced to the provider's maximum.The maximum shown on the card, or set by the provider.
Max attemptsTries per call, including the first.3
Cool-off (ms)The first wait after a 429. Later waits grow from it.500 ms
Requests at onceRequests open at the same time within one run.No limit

A Retry-After header from the provider overrides the cool-off. The pace applies per connection and is shared by every run on it. See Run performance.

DataLug retries a call that the provider refused with 429, and a call that could not connect. A read is also retried after a 408, a 5xx or a dropped connection. A write is retried only after a 429 or a failed connection.

A Retry-After delay of up to one minute is honoured. A longer one fails the call with the 429.

Troubleshooting​

What you seeWhat it meansWhat to try
Keap refuses to save the redirect URIIt is not HTTPS.Copy the Redirect URI from the DataLug connection form exactly.
invalid_scope on the consent pageScopes holds something other than full.Set it to exactly full.
You approve access but no refresh token arrivesThe app was approved before.Remove the app's authorisation in your Keap account and connect again.
401 on test or on a runThe refresh token was revoked, or the app was deleted in the developer portal.Click Connect Keap again.
429 Too Many RequestsKeap throttled the account.The run backs off and retries. If it recurs, lower Requests per period.
A field you added in Keap does not appearThe field list was loaded before the field existed.Click Get Fields. If it is still missing, the account Owner emails DataLug support at support@datalug.io with the object and field name.