Connect Kit to Fondoo

Live3 min readUpdated

Kit in Fondoo: what your AI agent can do with it, what to set up first, the permissions it needs and its limits.

In Kit open Settings → Developer → API Keys and create a v4 API key for Fondoo (v4 keys are different from the deprecated v3 key and secret); v4 API keys have the full permissions of your account, so keep it dedicated and revoke it when you disconnect. Kit has a single subscriber pool per account, so Fondoo syncs the whole account and uses tags for segments. Fondoo only creates people who completed Fondoo's double opt-in and never re-activates anyone Kit holds as unsubscribed (cancelled), bounced or complained. Broadcasts are created as drafts and sent only after owner approval; Kit may require a verified sending address and its account email footer.

Official documentation: https://developers.kit.com/api-reference/overview

Use add_connection_key without fields for a signed, one-use secure paste page. Then call test_connection and inspect confirmed versus unknown permissions. Direct tool credentials carry a chat-log warning. list_connections never returns credentials.

Auth: api_key (X-Kit-Api-Key header, API v4 base https://api.kit.com/v4). Category: email. Required provider scopes: none for API keys (Kit's OAuth flow is not used).

Capabilities are discoverable with list_connector_manifests; invoke them through connector_action. Writes retain shared Fondoo scopes, approvals, dry runs, audit, events and metering. Use rotate_connection_key before expiry and delete_connection to remove stored credentials; revoke upstream credentials separately.

What Fondoo does with Kit

Fondoo operations sync_subscribers_to_provider, sync_subscribers_from_provider, create_provider_campaign and send_provider_campaign drive these normalized capabilities. Consent rules: only people who completed Fondoo's double opt-in are pushed; Fondoo opt-outs are pushed as unsubscribes; anyone Kit holds as cancelled, bounced or complained is never re-activated and is adopted as an opt-out in Fondoo; imported subscribers get a consent attestation and still receive Fondoo's own confirmation email. send_provider_campaign is destructive (owner approval for agents).

  • audiences.list (read): Kit has one subscriber pool per account, so a single audience account is returned (member count from include_total_count). listId may be omitted or account; use tags for segments.
  • subscribers.list (read): GET /subscribers?status=all with cursor pagination (after/end_cursor, per_page ≤ 500 here) and include=tags. State mapping: active → subscribed, inactive → pending, cancelled → unsubscribed, bounced/complained → cleaned.
  • subscribers.upsert_batch (write): per member, look up GET /subscribers?email_address=…&status=all. Subscribe: skip cancelled/bounced/complained (skipped_provider_unsubscribed); create missing people with POST /subscribers (state:"active": Fondoo has already confirmed them); tag with POST /tags/{id}/subscribers, creating tags via POST /tags (idempotent by name). Unsubscribe: POST /subscribers/{id}/unsubscribe for existing non-cancelled people, never creating one. Up to 100 members / 320 requests per execute.
  • campaigns.create_draft (write): POST /broadcasts with public:false, send_at:null (the documented way to save a draft). fromName/replyTo are accepted but not sent: Kit uses the account's sending address.
  • campaigns.send (destructive): reads the broadcast, refuses unless it is an unsent draft, then PUT /broadcasts/{id} with public:true and send_at. Kit has no send-now call, so an immediate send is scheduled 90 seconds ahead (status:"sending"); with scheduleAt it is scheduled.

Vendor-native capabilities: subscribers.get, tags.list, tags.create, subscribers.add_tag, forms.list, forms.add_subscriber, broadcasts.list, broadcasts.get.

Not implemented: custom field writes, sequences, segments, purchases, webhooks management, subscriber deletion, tag removal.

API endpoints used

Limits and uncertainties

  • Rate limit: not stated in the reviewed v4 pages. Fondoo budgets 20 executes per minute and honours 429/Retry-After. Treat any specific vendor number as unverified.
  • Uncertain: POST /subscribers for an existing address only updates the first name (documented), and the page does not describe unsubscribed people, so Fondoo checks state first and never relies on the create call to respect opt-outs.
  • Uncertain: broadcast scheduling. The create and update pages say send_at schedules a send and null saves a draft; they do not document a send-now call, the full list of status values, or whether a minimum lead time applies, so Fondoo's 90-second lead is a conservative guess. The update page marks every field as required, so Fondoo re-sends the draft's own values.
  • Uncertain: the form subscription path POST /forms/{id}/subscribers with email_address is inferred from the "add subscriber to form by email address" page title; the page body was not reviewed.
  • Uncertain: include=tags on GET /subscribers (listed among documented include values with attribution, location, canceled_at).
  • Merge tag: campaign HTML uses {{ unsubscribe_url }}. Kit requires an unsubscribe link and {{ address }} for Starting-point templates; the default Classic template adds them.