> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connectif as a data source

> Bring data from Connectif to Nekt.

Connectif is a marketing automation platform for e-commerce that unifies customer data to power personalized
journeys across email, SMS, push notifications, and on-site content. This connector extracts the store's
configuration entities (workflows, coupon sets, contact fields, custom integrations) through the Connectif REST
API, and the bulk data — contacts and their activities — through Connectif's asynchronous export system.

## 1. Add your Connectif access

1. In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Connectif option from the list of connectors.

2. Click **Next** and you'll be prompted to add your access.

   * **API Key**: a Connectif API key in the `keyId:keySecret` format. In Connectif, go to **Store Settings -> API Keys**, click **Create new API Key**, give it a name and select its permission scopes. Copy the generated key right away. For more information, check the official [documentation](https://api-docs.connectif.cloud/connectif-api/guides/authentication).
   * **Start Date** (advanced): earliest activity date to sync in the activities streams. Defaults to 30 days before the first run.
   * **Activity Types** (advanced): restrict the activities export to specific activity types (e.g. `purchase`, `login`, `register`). Leave empty to sync all types.
   * **Segment ID** (advanced): optionally restrict the contacts and activities exports to contacts of a given Connectif segment.
   * **Export Version** (advanced): the Connectif export format version (`v1` to `v6`), which affects the CSV column layout of the contacts and activities streams. Defaults to `v6`.

<Info>
  The API key must include **read** scope for the resources you want to sync (contacts, workflows, coupons, store,
  integrations) and **read + write** scope for **Exports** — the connector creates export jobs to extract contacts
  and activities in bulk. No IP allowlisting is required.
</Info>

3. Click **Next**.

## 2. Select your Connectif streams

1. The next step is letting us know which streams you want to bring. You can select entire groups of streams or only a subset of them.

   > Tip: The stream can be found more easily by typing its name.

<Note>
  Discovering the streams runs a real Connectif export to detect the columns of the `contacts` and `activities`
  streams, so this step can take a few minutes on accounts with many contacts.
</Note>

2. Click **Next**.

## 3. Configure your Connectif data streams

1. Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.

* **Layer**: companies in the Growth plan can choose in which [layer](https://docs.nekt.com/get-started/core-concepts/catalog-layers) the tables with the extracted data will be placed.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: depending on the data you are bringing to the lake, you can choose between INCREMENTAL and FULL\_TABLE. Read more about Sync Types [here](https://docs.nekt.com/get-started/core-concepts/types-of-sync).

2. Click **Next**.

## 4. Configure your Connectif data source

1. Describe your data source for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.

2. To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

3. Optionally, you can define some additional settings (if available).

* Configure Delta Log Retention and determine for how log we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync)**. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

### Check your new source!

1. Click **Next** to finalize the setup. Once completed, you'll receive confirmation that your new source is set up!

2. You can view your new source on the [Sources](https://app.nekt.ai/sources) page. Now, for you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you have to wait for the pipeline to run. You can now monitor it on the [Sources](https://app.nekt.ai/sources) page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your new table will appear in the Catalog section.

> If you encounter any issues, reach out to us via Slack, and we'll gladly assist you!

## Available streams

| Stream              | Slug                  | Description                                                                                    |
| ------------------- | --------------------- | ---------------------------------------------------------------------------------------------- |
| Store               | `store`               | Details of the Connectif store the API key belongs to.                                         |
| Workflows           | `workflows`           | Automation workflows configured in the store, with status and lifecycle dates.                 |
| Coupon Sets         | `coupon_sets`         | Coupon sets with availability and assignment counters.                                         |
| Contact Fields      | `contact_fields`      | Standard and custom contact field definitions.                                                 |
| Custom Integrations | `custom_integrations` | Custom integrations configured in the store.                                                   |
| Custom Event Types  | `custom_event_types`  | Custom event types defined under each custom integration.                                      |
| Contacts            | `contacts`            | All contacts of the store, extracted through a full contacts export.                           |
| Activities          | `activities`          | Contact activities (events), extracted incrementally in date windows of up to 31 days.         |
| Activity Products   | `activity_products`   | Product lines that accompany the activities export (e.g. purchase basket items), when present. |

<Note>
  The columns of the `contacts`, `activities`, and `activity_products` streams are discovered at runtime from the
  CSV files produced by the Connectif export, so they depend on your account and on the selected **Export Version**.
  All export columns arrive as text and column names are normalized to snake\_case. Purchase data is available
  through the `activities` stream — filter it with the `purchase` activity type if that's all you need.
</Note>

## Fields by stream

Below you'll find all available data streams from Connectif and their corresponding fields:

<AccordionGroup>
  <Accordion title="store">
    Details of the Connectif store. **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the store
    * `name` - Display name of the store
    * `alias` - Alias of the store
    * `image_url` - URL of the store logo image
    * `organization_id` - Identifier of the organization that owns the store
    * `organization_name` - Name of the organization that owns the store
    * `created_at` - Timestamp when the store was created
    * `updated_at` - Timestamp of the last store update
  </Accordion>

  <Accordion title="workflows">
    Automation workflows configured in the store. **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the workflow
    * `name` - Display name of the workflow
    * `description` - Description of the workflow
    * `tags` - Tags assigned to the workflow
    * `folder` - Folder that contains the workflow
    * `status` - Current status (`draft`, `active`, `paused`, `finalized`, `scheduled`)
    * `created_at` - Timestamp when the workflow was created
    * `updated_at` - Timestamp of the latest update
    * `activated_at` - Timestamp when the workflow was activated
    * `finalized_at` - Timestamp when the workflow was finalized
    * `last_paused_at` - Timestamp of the latest pause
    * `last_resumed_at` - Timestamp of the latest resume
  </Accordion>

  <Accordion title="coupon_sets">
    Coupon sets available in the store. **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the coupon set
    * `name` - Display name of the coupon set
    * `code` - Coupon code; only present for coupon sets of type single
    * `type` - Coupon set type: `single` (one shared code) or `multiple` (one code per contact)
    * `available` - Number of coupons still available; null for single coupon sets
    * `assigned` - Number of coupons already assigned to contacts (updated in batches)
    * `quantity` - Total quantity of coupons in the set; null for single coupon sets
    * `created_at` - Timestamp when the coupon set was created
    * `updated_at` - Timestamp of the last update
    * `used_in_workflows` - Workflows that use this coupon set (JSON string)
  </Accordion>

  <Accordion title="contact_fields">
    Contact field definitions (standard and custom). **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the contact field
    * `name` - Name of the contact field
    * `type` - Data type (`text`, `integer`, `decimal`, `boolean`, `date`, `radio`, `checkbox`, `phone`, `email`)
    * `required` - Whether every contact must have a value for this field
    * `read_only` - Whether the field value cannot be modified
    * `custom` - Whether the field is a custom field created by the store members
    * `status` - Processing status of the field
    * `default_value` - Default value of the field
    * `max_length` - Maximum length allowed; only for text fields
    * `default_country_code` - Default country code; only for phone fields
    * `min_date` / `max_date` - Valid date range; only for date fields
    * `min_value` / `max_value` - Valid value range; only for integer or decimal fields
    * `options` - Allowed options for checkbox and radio fields (JSON string)
  </Accordion>

  <Accordion title="custom_integrations">
    Custom integrations configured in the store. **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the custom integration
    * `name` - Display name of the custom integration
    * `description` - Description of the custom integration
    * `created_at` - Timestamp when the custom integration was created
    * `color` - Hexadecimal color assigned in the Connectif UI
    * `image_uri` - Image URI; null when no custom image is set
    * `events_enabled` - Whether events are enabled for this integration
  </Accordion>

  <Accordion title="custom_event_types">
    Custom event types defined under each custom integration. **Sync:** Full table. **Primary key:** `id`.

    * `id` - Unique identifier of the custom event type
    * `custom_integration_id` - Identifier of the parent custom integration
    * `name` - Display name of the custom event type
    * `alias` - Alias of the custom event type
    * `icon` - Icon of the custom event type
    * `fields` - Field definitions of the event type (JSON string)
    * `category` - Category of the custom event type
    * `created_at` - Timestamp when the event type was created
    * `updated_at` - Timestamp of the last update
    * `webhook_url` - URL of the associated webhook; only when category is send
    * `webhook_headers` - Headers sent with the webhook (JSON string); only when category is send
    * `receive_type` - How events are received (`webhook`, `api`, `web/mobile-app`)
  </Accordion>

  <Accordion title="contacts">
    All contacts of the store, extracted through a full contacts export. **Sync:** Full table.

    Columns are discovered at runtime from the export CSV and mirror the contact fields of your account
    (standard fields plus any custom fields), so the exact list depends on your store and the selected
    **Export Version**. All columns arrive as text, with names normalized to snake\_case.
  </Accordion>

  <Accordion title="activities">
    Contact activities (events), extracted incrementally in date windows of up to 31 days. **Sync:** Incremental. **Replication key:** `export_window_end`.

    Columns are discovered at runtime from the export CSV and depend on your account and the selected
    **Export Version**; all columns arrive as text. The connector adds the `export_window_end` column (the end
    timestamp of the export window that produced the record) as the incremental replication key.

    The export can be filtered with the **Activity Types** setting. Available types:
    `contact-created`, `email-sent`, `email-sent-alert`, `email-unsubscribed`, `email-opened`,
    `email-link-clicked`, `email-bounce`, `web-content-opened`, `web-link-clicked`, `web-form-submitted`,
    `purchase`, `contact-identified`, `login`, `register`, `search`, `newsletter-subscribe`,
    `product-searched`, `cart-abandoned`, `cart-product-added`, `cart-product-removed`,
    `push-notification-opened`, `push-notification-link-clicked`, `push-notification-subscribed`,
    `push-notification-unsubscribed`, `push-notification-migrate-subscription`, `push-notification-error`,
    `contact-entered-segment`, `contact-exited-segment`, `contact-merged`, `sms-sent`, `sms-sent-alert`,
    `sms-bounce`, `sms-unsubscribed`, `facebook-contact-sent`, `coupon-assigned`, `product-visited`,
    `web-page-visited`, `contact-added-to-gads-audience`, `contact-removed-from-gads-audience`,
    `shared-data-received`.
  </Accordion>

  <Accordion title="activity_products">
    Product lines that accompany the activities export. **Sync:** Incremental. **Replication key:** `export_window_end`.

    When the activities export includes product-level detail (e.g. purchase basket items), Connectif ships it
    as a companion products file inside the same export. This stream emits those rows, with columns discovered
    at runtime; it yields no records when your account's export contains no products file.
  </Accordion>
</AccordionGroup>

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Connectif skills file" icon="wand-magic-sparkles" href="/sources/connectif.md">
  Connectif connector documentation as plain markdown, for use in AI agent contexts.
</Card>
