Skip to main content
July 9 2026 — Accounts
API

🚀 New plan object on GET /v4/account

The current account endpoint now returns a nested plan object with plan and trial details, so integrations can tell paying accounts apart from trialing ones without extra lookups:
  • plan_type — the account’s plan type; the same value as the existing top-level plan_type, duplicated for convenience.
  • interval — the plan’s billing interval (month or year).
  • subscriber_limit — the plan’s subscriber tier; null means unlimited.
  • on_trialtrue while the account is on an active free trial.
  • trial_lapse_date — when the account’s most recent trial ends or ended; null if the account never had a trial.
  • renews_at — when the subscription will renew; only set while the subscription is active and will actually renew.
  • cancels_at — when a cancelled-but-still-paid-up subscription’s access ends; only set while a cancellation is pending. At most one of renews_at / cancels_at is non-null.
All existing fields are unchanged, so no integration updates are required.Full reference: Get current account
July 9 2026
Kit App Store

🚀 Preview your app listing before saving

The app details editor now has a Preview button (next to Save) that renders your App Store listing with your current unsaved changes — name, summary, icon, images, video, categories, and the markdown description — exactly as creators will see it. It uses the same server-side markdown rendering as the live page, so it’s also the quickest way to check which formatting is supported. You can save directly from the preview; published apps still get the go-live confirmation.Rolling out to app developers now.More: App details page
July 7 2026 — Sequence Emails
API

🔧 Sequence email position is now guaranteed unique

Positions within a sequence are now enforced as unique at every write path, so two active emails can no longer share a slot:
  • Explicit collisions are rejectedPOST and PUT on /v4/sequences/{sequence_id}/emails return 422 if the requested position is already taken by another email in that sequence.
  • Omit position to append — leaving position out (or sending null) now allocates the next available slot at the end of the sequence instead of writing an empty position.
Full reference: Create a sequence email · Update a sequence email
June 30 2026 — Subscribers
API

🚀 POST /v4/subscribers/filter gains custom fields, location, attribution, and includes

The subscriber filter endpoint picked up a series of upgrades across June, making it a much more capable segmentation tool:
  • custom_field filter — match subscribers on any custom field value.
  • location filter — match subscribers by location.
  • Attribution filter — match subscribers by the form or landing page they were attributed to.
  • counting_mode on engagement filters — choose raw (every engagement event) or unique_email (one per email) when filtering on opens/clicks.
  • include body parameter — request extra data alongside each match, including stats (engagement stats) and custom_fields (custom field values).
These compose with the existing engagement, subscribed, subscriber_state, and tags filters in the same request. Default behaviour is unchanged — the new conditions and includes are all opt-in.Full reference: Filter subscribers
June 30 2026 — Purchases
APICommerce

🚀 Purchases now expose source and include subscription & tip line items

Two additions to the v4 Purchases API:
  • Every purchase response now includes a source field — the name of the originating integration or connected app (e.g. Gumroad, Stripe, Teachable) — on GET /v4/purchases, GET /v4/purchases/{id}, and the create response.
  • Purchase responses now include subscription and tip line items alongside standard product items, so recurring-revenue and tip transactions are fully represented.
Full reference: List purchases · Create a purchase
June 18 2026
API

🚀 New endpoint: DELETE /v4/bulk/tags

You can now delete multiple tags in a single request with the new bulk endpoint, mirroring the existing bulk create/tag patterns.Full reference: Bulk delete tags
June 11 2026
API

🚀 Opt-in subscriber_count on GET /v4/tags and GET /v4/forms

Both index endpoints can now return an active subscriber_count per record when you request it with ?include=subscriber_count. It’s opt-in so default responses stay fast — pass the include only when you need the counts.Full reference: List tags · List forms
May 29 2026
APIAnalytics

🚀 Engagement rates on GET /v4/account/email_stats

The account email stats endpoint now returns four calculated rates alongside the raw counts: open_rate, click_rate, unsubscribe_rate, and bounce_rate. You no longer need to derive these client-side from the underlying totals.Full reference: Get email stats
May 26 2026 — Authentication
Authentication

🔧 POST /oauth/revoke now performs full partner-side cleanup

When a partner revokes a Kit-issued OAuth token, Kit now tears down the linked install state in the same request:
  • Any partner credentials Kit had stored for that account are queued for deletion.
  • The Kit-side installation record is marked uninstalled, so the app no longer appears as installed for that account.
Previously, revoking a token only invalidated the access grant — installation state and stored credentials lingered until the next sync. App developers who treat /oauth/revoke as a clean teardown signal can now rely on it as a single call.The HTTP contract of /oauth/revoke is unchanged; both the request and the success response remain identical.Full reference: OAuth token revocation
May 26 2026 — Broadcasts
API

🚀 Broadcast status field and ?status= filter on broadcast list endpoints

Every V4 broadcast response now includes a status field with one of draft, scheduled, sending, completed, or aborted. This removes the need to infer broadcast state from a mix of send_at, published_at, and other fields.GET /v4/broadcasts and GET /v4/broadcasts/stats also accept a new optional ?status= query parameter that filters to broadcasts in the given lifecycle state. Passing an unknown value returns 422 Unprocessable Entity with the list of accepted statuses. Omitting status preserves existing behaviour.Full reference: List broadcasts · Get stats for a list of broadcasts
May 21 2026 — Subscribers
API

🚀 slim query parameter on /v4/subscribers and /v4/forms/:form_id/subscribers

Two more list endpoints now accept ?slim=true, extending the slim mode introduced for GET /v4/broadcasts and GET /v4/tags/:tag_id/subscribers on May 20. In slim mode, the fields object (custom field values) is omitted from each subscriber record and the underlying query skips the custom field join entirely, making large list responses noticeably faster.Default behaviour is unchanged — pass slim=true explicitly to opt in. On /v4/subscribers, slim composes with the existing include= parameter — the requested includes still resolve, slim only skips the fields block. /v4/forms/:form_id/subscribers doesn’t accept include=.Full reference: List subscribers · List subscribers for a form
May 21 2026 — Filters
API

🚀 New subscriber_state filter on /v4/subscribers/filter

POST /v4/subscribers/filter accepts a new filter type: subscriber_state. Provide a states array of one or more lifecycle values — active, inactive, bounced, cancelled, or complained — and the filter returns subscribers whose current state matches any value in the array.subscriber_state composes with engagement, subscribed, and tags filters in the same request. since / before and any don’t apply to this type and are ignored when present.Most workflows want states: ["active"] — that mirrors the default scope of most other subscriber-facing queries in Kit.Full reference: Filter subscribers based on engagement
May 20 2026 — Authentication
Authentication

🔧 OAuth refresh token rotation

Refresh tokens are now single-use. Each call to POST /oauth/token with grant_type=refresh_token issues a new refresh token and revokes the previous one. Reusing an old refresh token returns invalid_grant.This affects every OAuth client connected to Kit — including App Store integrations and MCP clients. If you store the refresh token from the original authorisation flow and reuse it across multiple sessions, update your client to store and use the latest refresh token from each refresh response instead. Mainstream OAuth clients handle rotation natively; custom integrations that cache refresh tokens will need a small update.Public OAuth clients (Dynamic Client Registration with confidential: false) no longer receive client_secret or client_secret_expires_at in the DCR registration response. The token_endpoint_auth_method field is now none for public clients. The .well-known/oauth-authorization-server discovery document now advertises token_endpoint_auth_methods_supported: ["client_secret_post", "none"]. Existing well-formed DCR clients work without changes — this aligns the response with what the server already accepted.Full reference: OAuth refresh token flow
May 20 2026 — API
API

🚀 New fields on V4 sequence responses

GET /v4/sequences and GET /v4/sequences/{id} now return two new fields: email_count and subscriber_count. email_count reflects published email templates only (drafts don’t count); subscriber_count reflects active subscribers. Both are available to all V4 callers (API key and OAuth) — no changes required on your end.

🚀 New slim query parameter on heavy list endpoints

GET /v4/broadcasts and GET /v4/tags/:tag_id/subscribers now accept ?slim=true to skip expensive fields and database queries. For broadcasts, slim mode omits content, public_url, email_address, email_template, and subscriber_filter. For tag subscribers, it omits custom field values. Default behaviour is unchanged — pass slim=true explicitly to opt in.Full reference: List broadcasts · List subscribers for a tag · Get a sequence
May 14 2026
Kit App StoreAutomation

🚀 Visual Automation templates for all app developers

App developers can now build, submit, and publish Visual Automation templates directly from the developer portal — pre-built automations that creators preview and adopt the moment they install your app.
  • Templates move through Draft → In review → Approved → Published states, managed from your app’s Templates tab.
  • Template review runs alongside app review — bundled with app review for unpublished apps, template-only for published apps.
  • Editing a published template’s name, description, feature labels, or source automation auto-unpublishes it and sends it back for re-review. The last-approved version stays live for creators until re-approval.
  • Deleting a template removes it from your catalogue; creators who’ve already adopted it keep their working copy.
  • Once a creator adopts a published template, the automation editor is locked — they can see it but can’t change it.
Visual Automation templates
May 13 2026
PluginsAutomation

🚀 Dynamic content blocks and Visual Automation context are now available to all developers

Two related capabilities are out of limited release and available to every Kit app developer.Dynamic content blocks — content block plugins that return a Liquid template instead of static HTML, so the rendered output is personalized per subscriber at send time. Configure your event plugin’s Sample data JSON on the Context card, link a content block to it via related_plugin_id, and reference subscriber data in Liquid as {{ automation.<app>.<event>.* }}. Full guide: Dynamic content blocks.Visual Automation context — event plugins can now attach an optional context object to each event, and Kit makes that context available everywhere downstream:
  • In sequence email Liquid (body, button URLs, links): {{ automation.<app>.<event>.<field> }}.
  • On dynamic content block previews and per-subscriber renders.
  • On action plugin request bodies as subscribers[].context.apps.<app>.<event>.* — your action endpoint receives the same context your event plugin (or another app’s event plugin) attached upstream, with no extra lookup.
Limits: 64 KB per subscriber context row, 32 distinct app namespaces, 64 keys per app. Over-limit data is dropped silently rather than blocking the VA.See automation node plugin configuration → Event context and Receiving VA context on action payloads.
May 8 2026 — Broadcast Stats
API

🚀 GET /v4/broadcasts/stats — enriched response and date filtering

GET /v4/broadcasts/stats now returns subject and send_at on every row by default. This eliminates the need for a follow-up GET /v4/broadcasts/:id call per row when building subject-line or send-time analyses.The endpoint also accepts two new optional query parameters:
  • sent_after — filter to broadcasts sent after this ISO 8601 datetime
  • sent_before — filter to broadcasts sent before this ISO 8601 datetime
Omitting both preserves existing response behaviour — no breaking change. Cursor pagination via per_page / after continues to work as documented.Plan gating: this endpoint requires a Pro plan or special developer authorisation. Requests from free accounts return 403.Full reference: /api-reference/broadcasts/get-stats-for-a-list-of-broadcasts
May 8 2026
API

🚀 Sequence Emails CRUD API

Full CRUD for the individual emails inside a sequence is now available on the V4 API:
  • GET /v4/sequences/:sequence_id/emails — list emails in send order. content is omitted by default; pass include_content=true to include it.
  • GET /v4/sequences/:sequence_id/emails/:id — fetch a single email, always with full content.
  • POST /v4/sequences/:sequence_id/emails — create an email (published: false by default so it doesn’t go out until you flip it).
  • PUT /v4/sequences/:sequence_id/emails/:id — update subject, content, timing, send days, position, or publish state.
  • DELETE /v4/sequences/:sequence_id/emails/:id — remove an email; subscribers already queued for it will skip it.
Two delay modes: delay_unit: "days" follows the sequence schedule, delay_unit: "hours" bypasses it and fires once the delay elapses (checked every 15 minutes). Per-email send_days overrides the sequence-level schedule (days mode only) — pass send_days: null to revert to inheriting it.Snippets are referenced inside content via {{ snippet.<key> }} and resolve at send time, so editing a snippet automatically updates every email referencing it without re-publishing.Full reference: /api-reference/sequence-emails/list-sequence-emails · /api-reference/sequence-emails/get-a-sequence-email · /api-reference/sequence-emails/create-a-sequence-email · /api-reference/sequence-emails/update-a-sequence-email · /api-reference/sequence-emails/delete-a-sequence-email
April 29 2026
API

🚀 GET /v4/subscribers now supports opt-in enrichment via include=

GET /v4/subscribers now accepts an include= query parameter that returns additional fields alongside the base subscriber record. Pass a comma-separated list of any of the following values:
  • include=attribution — referrer, UTM parameters, and Kit source data per subscriber
  • include=tags — array of {id, name} tag objects
  • include=location — city, state, country, lat, and lng
  • include=canceled_at — ISO 8601 cancellation timestamp; requires status=cancelled (returns 422 otherwise)
Values can be combined (e.g. include=tags,location,canceled_at). Omitting include= leaves existing response shape and performance unchanged. Invalid values return 422 with the full list of accepted options.Full reference: /api-reference/subscribers/list-subscribers
April 28 2026
API

🚀 Snippets CRUD API

Snippets are now available on the V4 API:
  • GET /v4/snippets — list snippets, with snippet_type and archived filters. content and document are omitted by default — pass include_content=true to include them.
  • GET /v4/snippets/:id — fetch a single snippet (always includes content).
  • POST /v4/snippets — create a snippet.
  • PUT /v4/snippets/:id — rename, update content, or archive/restore (pass archived: true / false in the body).
Snippets come in two types: inline snippets store plain text with Liquid variable support in content, and block snippets store rich HTML in document_attributes[value_html]. A snippet’s type is set on creation and cannot be changed via PUT.Each response includes a key field — that’s the identifier used to reference a snippet from a broadcast or sequence email via Liquid ({{ snippet.key }}). The API also rejects circular references (a snippet nesting itself) with a clear validation error.Full reference: /api-reference/snippets/list-snippets · /api-reference/snippets/get-a-snippet · /api-reference/snippets/create-a-snippet · /api-reference/snippets/update-a-snippet
April 23 2026
Plugins
You can now use markdown formatting in the help field of all plugin component library. The following formatting is supported:
  • Hyperlinks: link text
  • Bold: bold
  • Italic: italic
Plugin Component Library
April 2026
API

🚀 Newsletter posts on the V4 API

Two new read-only endpoints expose newsletter posts on the V4 API — including drafts and web-only posts that weren’t reachable through broadcasts:
  • GET /v4/posts — cursor-paginated list (up to 1000 per page). Pass include_content=true to return the full HTML body (off by default to keep responses small).
  • GET /v4/posts/{id} — fetch a single post, always includes content.
Each response includes id, publication_id, title, slug, description, status, published_at, sent_at, thumbnail_url, is_paid, and public_url. Use publication_id to join a post back to its broadcast via GET /v4/broadcasts. Supports API key and OAuth2.Full reference: /api-reference/posts/list-posts · /api-reference/posts/get-a-post
April 2026
API

🚀 Sending addresses on the Account endpoint

The GET /v4/account response now includes a sending_addresses array listing every sending address configured on the account. Each entry contains email_address, from_name, status, is_default, is_verified, and is_dmarc_configured. These addresses can be used when creating or updating any email via the API. Unverified addresses are included and marked with is_verified: false.Full reference: /api-reference/accounts/get-current-account
April 2026
API

🚀 Sequences CRUD API

Full CRUD support for sequences is now available on the V4 API. Five endpoints shipped:
  • GET /v4/sequences — expanded to return the full sequence object (13 fields including send_days, time_zone, email_address, exclude_subscriber_sources)
  • GET /v4/sequences/:id — fetch a single sequence by ID
  • POST /v4/sequences — create a sequence programmatically
  • PUT /v4/sequences/:id — update sequence settings
  • DELETE /v4/sequences/:id — soft delete with background cleanup
Previously, the API only supported listing sequences with minimal fields and managing subscribers. Alongside the soon to be released sequence email endpoints, you can build full sequence management workflows — abandoned checkout flows, upsell journeys, automated templating — without manual intervention in the Kit UI.Docs: developers.kit.com/api-reference/sequences/list-sequences
April 2026
API

🚀 Broadcast date filtering

GET /v4/broadcasts now supports sent_after and sent_before query parameters for server-side date filtering. Use both together to define a date range, or omit both to preserve existing unfiltered behaviour. Filters are applied before pagination, so page sizes and cursor behaviour remain consistent. Invalid date values return 422 with descriptive error messages.This enables incremental sync patterns — instead of fetching your full broadcast history and filtering client-side, call GET /v4/broadcasts?sent_after=2026-04-16 to retrieve only what’s changed since your last run.Full reference: developers.kit.com/api-reference/broadcasts/list-broadcasts
April 2026
Plugins

🚀 Default values now supported across all plugin settings components

All plugin settings components now support an optional default property that pre-fills the setting value when a creator first adds the component. Previously only available on Radio Group, Slider, Toggle, and Textarea, it is now also supported on:The property is optional and nullable. Existing settings without default continue working unchanged.
March 2026
Kit App Store

🔧 Going-live checklist prompt added to app submission

The Submit for Approval modal now displays a pre-submission checklist when you click “Submit for approval” in the Distribution tab, with a direct link to the going-live checklist. No changes to the submission API or review process.
March 2026
Kit App Store
The Kit App Store now has free-text search. Creators can search by app name, category, or description with real-time debounced results and fuzzy/partial matching. The category filter has moved into a dropdown co-located with the search input. No API changes — this is an in-product UI feature available at app.kit.com under Automate > Apps. See the App Store overview and app details page for context on the App Store surface.
February 2026
APICommerce

🔧 Purchases endpoints now return subscriber_id

The List Purchases and Get Purchase endpoints now include subscriber_id in the response, eliminating the need for an extra API call to map a purchase to a subscriber.
February 2026
Documentation

🚀 Kit Developer Docs MCP server

Connect your AI coding agent directly to Kit’s developer documentation using the Kit Developer Docs MCP server. Supported clients can query the full API reference on demand, make live API calls on your behalf, and spin up local OAuth servers for testing.
February 2026
APIWebhooks

🚀 Custom Field Webhooks & Bulk Updates

  • Introduced 3 new webhook events for custom fields: custom_field.field_created, custom_field.field_deleted, and custom_field.field_value_updated, enabling real-time sync with third-party apps.
  • Added a bulk update endpoint (POST /v4/bulk/custom_fields/subscribers) to update multiple custom field values for multiple subscribers in a single API call.
  • Learn more about webhooks and bulk updates.
January 2026
Plugins

🚀 Transparent color option now available in color picker

The color picker component now supports an allow_transparent property that displays a “Transparent” toggle, allowing creators to set colors to transparent.
December 2025
Kit App Store

🚀 App Settings now live in Kit App Store

Developers can now set an external “App Settings” URL in their app settings, allowing Creators to be able to customize their app setup post-installation, reducing account bloat by controlling data creation and sync. Read about best practices of how to implement this here.
November 2025
Kit App Store

🔧 Improved Kit App Store Sorting

  • Default sorting now highlights the most popular apps by all-time installations.
  • Introduced a “Trending” category for apps gaining traction across our creators.
  • Renamed “Last added” to “Newest” for clarity.
October 2025
APIAnalytics

🚀 New API endpoints: “List stats for a subscriber” and “Filter subscribers based on engagement”

Developers can now use Kit’s API to filter subscribers by events like opened, clicked, sent, delivered, and subscribed with customizable date ranges and event counts. Explore the API to enhance subscriber engagement tracking. Additionally, the List stats endpoint now supports specifying date ranges for subscriber engagement data. Learn more.
October 2025
AutomationPlugins

🚀 Automation nodes app plugin environment launched

Developers can now integrate third-party apps with Kit Visual Automations using action and event nodes. This opens up powerful new ways for developers to build with Kit, and for creators to automate their workflows.
  • Event nodes trigger automations on conditions like “call booked” or “survey completed”.
  • Action nodes perform tasks in external systems such as “send an SMS” or “enroll a subscriber in a course”.
  • Apps like Shopify, Thinkific, and Calendly are already utilizing these nodes.
Explore more in our documentation.
October 2025
Kit App StoreAuthentication

🚀 Dynamic return URLs for app installations

Developers can now redirect users back to specific pages after completing an app install using the return_to query parameter in installation flows, enabling smoother integration experiences that originate from partner sites.
September 2025
Documentation

📖 Developer changelog now live

Developer changelog interface
Stay up to date with Kit’s latest developer platform updates through our new changelog featuring:
  • Emoji categories: 🚀 Added, 🔧 Changed, 🐛 Fixed, ⚠️ Breaking Changes
  • RSS subscription: Never miss an update with the RSS feed button
  • Smart filtering: Filter by product area including Kit App Store, Plugins, API, Authentication, and more
  • Copy functionality: Easily share updates with the copy page feature
Subscribe to updates to stay informed about the latest changes.
September 2025
API

🚀 New subscriber stats endpoint available

Get comprehensive engagement metrics for individual subscribers including sends, opens, clicks, bounce rates, and timestamps via the new subscriber stats API endpoint.
August 2025
Plugins

🚀 New plugin components and dependency support now available

August 2025
Kit App Store

🔧 Kit App Store and app management UX improvements

  • Entire app cards now clickable with streamlined navigation and consistent button hierarchy
  • New install button directly on Build tab for faster app testing workflows
  • In app settings (https://app.kit.com/apps/:app_id/auth), API and Plugin Authentication separated into distinct sections with clearer plugin type display
August 2025
Kit App StoreAuthentication

🚀 App Versioning now available for seamless authentication updates

Developers can now ensure creators have access to their latest functionality through app versioning:
  • Apps automatically create new versions when authentication requirements change
  • Creators receive smart notifications and can update permissions without reinstalling
  • Plugin-level scope control with cumulative permission tracking across all plugins
August 2025
AuthenticationAPI

🔧 OAuth flow now starts from api.kit.com

Kit’s OAuth flow is now initiated from api.kit.com/v4/oauth for consistency with other API endpoints, replacing the previous app.kit.com requirement.
June 2025
Kit App Store

🚀 Direct app installation URLs now available

Developers can now drive app installations directly from their websites using https://app.kit.com/apps/:app_id/install?k_app_id=k_:app_id without requiring users to first visit Kit App Store.
June 2025
Kit App Store

🔧 App icons now display consistently across the Kit App Store

App thumbnails now display as uniform squares (60x60px on detail pages, 40x40px elsewhere) with proper cropping and centering, ensuring professional appearance regardless of original image dimensions.
June 2025
Kit App StorePlugins

🚀 Plugin deletion now available for developers

Developers can now permanently delete plugins from their Kit apps to better manage their plugin inventory.
June 2025
DocumentationAPIKit App Store

🚀 Brand new developer documentation platform

We’ve completely rebuilt our developer documentation from the ground up, centralizing all developer resources in one comprehensive hub at developers.kit.com.

Key improvements include:

  • Unified resource center: All guides, tutorials, and API documentation now live in one carefully structured location
  • Updated content: Every piece of documentation has been refreshed and expanded, from app creation guides to OAuth implementation tutorials
  • Enhanced navigation: Improved site structure makes finding relevant information faster and more intuitive

🚀 New interactive features

API Sandbox

  • Test Kit’s V4 API directly in the documentation
  • Input your API key and make live requests without leaving the docs
  • Perfect for rapid prototyping and testing

Advanced Search & AI Support

  • Full-text search across all documentation
  • Built-in “Ask AI” functionality for instant answers
  • Industry-standard llms.txt and llms-full.txt support for AI integrations

🔧 Developer experience improvements

  • Dark mode support: Documentation now adapts to your preferred viewing mode
  • SEO optimized: Better discoverability for developers searching for Kit integration help
  • Quick action CTAs: Streamlined paths to sign up, join the developer community, and contact support
  • Mobile responsive: Optimized experience across all devices