Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.kit.com/llms.txt

Use this file to discover all available pages before exploring further.

Let’s say you’re building an abandoned cart recovery integration. Subscribers who leave items in their cart are enrolled in a Visual Automation that sends them an email containing a personalized block showing exactly what they left behind. Here’s the full flow:
1

Build your automation event plugin

You create an automation node plugin that fires when a subscriber abandons their cart. This event plugin is responsible for capturing the subscriber’s cart data and making it available in Kit’s automation context under a path like automation.yourapp.<event_node_identifier>.*, where <event_node_identifier> is the identifier on that event node (not the dynamic content block’s identifier).Kit will use this data at send time to populate the Liquid variables in your content block’s HTML template.
2

Create the content block endpoint

You create a POST endpoint on your server that generates the Liquid-templated HTML for your content block. This endpoint receives the creator’s settings choices and returns HTML containing Liquid variables—for example, {{ automation.yourapp.abandoned_checkout.checkout_url }} when the linked event node’s identifier is abandoned_checkout.Details on configuring this endpoint and the expected request/response format are in plugin configuration.
3

Optionally create a search endpoint

If your block’s sidebar includes a search input to let creators browse or select data from your service (for example, choosing a fallback product to display), create a POST endpoint to serve those results.
4

Create and publish your app

You create your app in Kit and configure both the automation event plugin and the dynamic content block plugin. When configuring the content block plugin, set dynamic to true and link it to your event plugin using related_plugin_id. Define required_data_fields and default_values to power the editor preview.Once both plugins are ready, submit your app for approval and publish.
5

Creator installs your app

A Kit user installs your app, triggering your plugin’s OAuth authorization flow.
6

Creator builds a Visual Automation using your event plugin

The creator sets up a Visual Automation workflow that includes your automation event plugin (e.g., “Abandoned Cart”). When a subscriber triggers this event, Kit captures the data your plugin provides and stores it in the automation context for that subscriber.
7

Creator adds your content block to the automation email

Inside the Visual Automation, the creator edits the sequence email and adds your dynamic content block from the element menu. Upon adding it—and each time they adjust a setting—Kit makes a POST request to your content block endpoint with the creator’s settings.
8

Return Liquid-templated HTML

Your server responds with HTML containing Liquid variables that reference the automation context—for example:
{% if automation.yourapp.abandoned_checkout %}
  {% for product in automation.yourapp.abandoned_checkout.products limit: 4 %}
    <table>
      <tr><td>{{ product.name }}</td></tr>
      <tr><td>{{ product.price }}</td></tr>
    </table>
  {% endfor %}
  <a href="{{ automation.yourapp.abandoned_checkout.checkout_url }}">Complete your order</a>
{% endif %}
Kit renders this template with your default_values to generate a preview for the creator to see in the editor.
9

Kit personalizes and sends the email

When the automation sends the email to a subscriber, Kit renders the stored Liquid template using that subscriber’s actual automation data—filling in their real cart contents, checkout URL, and totals. Each subscriber receives a personalized version of the block.