Keap
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
- Go to the Keap developer portal and sign in with the account that owns the app.
- Create an application and open its keys.
- In DataLug, add a Keap connection and copy the Redirect URI.
- Paste it into the app's redirect URI exactly.
- Copy the app's Client ID and Client Secret into DataLug.
- Leave Scopes as
full. - Click Connect Keap and approve access. DataLug stores the refresh token.
- 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.
| Field | Step | What to enter |
|---|---|---|
| Auth Type | Authentication | OAuth. Keap offers OAuth only. |
| Client ID | Authentication | From your app in the Keap developer portal. |
| Client Secret | Authentication | From the same app. |
| Redirect URI | Authentication | Filled in. Copy it into the app's redirect URI. |
| Refresh Token | Authentication | Filled in by Connect Keap. |
| Scopes | Options | full. |
Stored secrets are never sent back to the browser. To change one, use Replace.
Supported operations
Objects. Contact, Company, Opportunity and Task.
| Action | Node | Operations |
|---|---|---|
| Query (Source) | Source node | Query, with an optional Limit |
| Load (Target) | Load node | Insert, 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.
| Setting | What it does | Default |
|---|---|---|
| Requests per period, Period | Paces outgoing calls. Set both to throttle. | No throttle, or the rate shown on the card. |
| Page size | Rows per request. A larger value is reduced to the provider's maximum. | The maximum shown on the card, or set by the provider. |
| Max attempts | Tries per call, including the first. | 3 |
| Cool-off (ms) | The first wait after a 429. Later waits grow from it. | 500 ms |
| Requests at once | Requests 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 see | What it means | What to try |
|---|---|---|
| Keap refuses to save the redirect URI | It is not HTTPS. | Copy the Redirect URI from the DataLug connection form exactly. |
invalid_scope on the consent page | Scopes holds something other than full. | Set it to exactly full. |
| You approve access but no refresh token arrives | The app was approved before. | Remove the app's authorisation in your Keap account and connect again. |
401 on test or on a run | The refresh token was revoked, or the app was deleted in the developer portal. | Click Connect Keap again. |
429 Too Many Requests | Keap throttled the account. | The run backs off and retries. If it recurs, lower Requests per period. |
| A field you added in Keap does not appear | The 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. |
Related
- Source node and Load node.
- Connections for environments and sharing.
- HubSpot and Zoho CRM.