Connect Kit to Fondoo
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 audienceaccountis returned (member count frominclude_total_count).listIdmay be omitted oraccount; use tags for segments.subscribers.list(read):GET /subscribers?status=allwith cursor pagination (after/end_cursor,per_page≤ 500 here) andinclude=tags. State mapping:active→subscribed,inactive→pending,cancelled→unsubscribed,bounced/complained→cleaned.subscribers.upsert_batch(write): per member, look upGET /subscribers?email_address=…&status=all. Subscribe: skip cancelled/bounced/complained (skipped_provider_unsubscribed); create missing people withPOST /subscribers(state:"active": Fondoo has already confirmed them); tag withPOST /tags/{id}/subscribers, creating tags viaPOST /tags(idempotent by name). Unsubscribe:POST /subscribers/{id}/unsubscribefor existing non-cancelled people, never creating one. Up to 100 members / 320 requests per execute.campaigns.create_draft(write):POST /broadcastswithpublic:false,send_at:null(the documented way to save a draft).fromName/replyToare accepted but not sent: Kit uses the account's sending address.campaigns.send(destructive): reads the broadcast, refuses unless it is an unsent draft, thenPUT /broadcasts/{id}withpublic:trueandsend_at. Kit has no send-now call, so an immediate send is scheduled 90 seconds ahead (status:"sending"); withscheduleAtit isscheduled.
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
- Pagination: https://developers.kit.com/api-reference/pagination
- Subscribers: https://developers.kit.com/api-reference/subscribers/list-subscribers , https://developers.kit.com/api-reference/subscribers/create-a-subscriber , https://developers.kit.com/api-reference/subscribers/unsubscribe-subscriber
- Tags: https://developers.kit.com/api-reference/tags/list-tags , https://developers.kit.com/api-reference/tags/create-a-tag , https://developers.kit.com/api-reference/tags/tag-a-subscriber-by-email-address
- Forms: https://developers.kit.com/api-reference/forms/list-forms , https://developers.kit.com/api-reference/forms/add-subscriber-to-form-by-email-address
- Broadcasts: https://developers.kit.com/api-reference/broadcasts/create-a-broadcast , https://developers.kit.com/api-reference/broadcasts/update-a-broadcast , https://developers.kit.com/api-reference/broadcasts/list-broadcasts
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 /subscribersfor 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_atschedules a send andnullsaves a draft; they do not document a send-now call, the full list ofstatusvalues, 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}/subscriberswithemail_addressis inferred from the "add subscriber to form by email address" page title; the page body was not reviewed. - Uncertain:
include=tagsonGET /subscribers(listed among documented include values withattribution,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.
