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

# Integrations

> Connect the revenue sources and ad platforms in Sources.

When you finish, one revenue source and one ad platform are connected, and one conversion has reached the ad platform.

## The twelve sources

Open **Sources**. Every connection lives on one card there. There is no Settings page for sources.

### Ad platforms

| Source       | Connect method              | What you must supply                                     |
| ------------ | --------------------------- | -------------------------------------------------------- |
| Meta Ads     | Facebook Login for Business | One primary ad account. Pixel ID per rule                |
| Google Ads   | Google OAuth                | One primary customer account. Conversion action per rule |
| TikTok Ads   | TikTok OAuth                | One primary advertiser. Pixel code per rule              |
| Snapchat Ads | Snapchat OAuth              | Pixel ID per rule. No account step                       |
| OpenAI Ads   | API key paste               | API key and Pixel ID                                     |

### Revenue and event sources

| Source            | Connect method      | What you must supply                          |
| ----------------- | ------------------- | --------------------------------------------- |
| Stripe            | Stripe OAuth        | Nothing after authorization                   |
| Shopify           | Shopify app install | The store, then the theme app embed           |
| RevenueCat        | Webhook             | App ID, environment, webhook secret           |
| Superwall         | Webhook             | Bundle ID, project ID, webhook secret         |
| Whop              | Webhook             | Webhook secret                                |
| Checkout Champ    | Webhook             | Five postback URLs, one per event type        |
| Apple SKAdNetwork | Plist endpoint      | iOS Bundle ID and a conversion-value template |

Webhook sources give you a URL of the form `https://webhooks.datalyr.com/{source}/{workspace_public_id}`. Paste it into the source's own dashboard.

ClickFunnels posts to `https://webhooks.datalyr.com/clickfunnels/{workspace_public_id}`. Create its rule by hand in **Conversions**.

## Connect in this order

<Steps>
  <Step title="Install tracking">
    Install the tracking script. Confirm one event in **Events**.
  </Step>

  <Step title="Connect the revenue source">
    Connect the system that records money. Trace one real transaction into **Events**.
  </Step>

  <Step title="Connect the ad platform">
    Connect the ad platform. Finish its account step.
  </Step>

  <Step title="Create one rule">
    Open **Conversions**. Select **manage rules**. Create one rule for your highest-value event.
  </Step>

  <Step title="Prove delivery">
    Send one test. Confirm the delivery row and the ad platform's own diagnostics.
  </Step>
</Steps>

This order isolates failures. Reconnecting an ad account cannot fix a missing source event.

## Card states

| State text              | Meaning                                 | Your next action                                  |
| ----------------------- | --------------------------------------- | ------------------------------------------------- |
| `not connected`         | No connection exists                    | Select **connect**                                |
| `needs primary account` | Authorization worked, no account chosen | Select **select account**                         |
| `action required`       | The connection returned an error        | Read the error text on the card. Select **retry** |
| `deleting`              | Cleanup is running after a disconnect   | Wait. Select **retry** if it stalls               |
| `last event <time>`     | Events arrived recently                 | Nothing                                           |
| `no events in 30d`      | The connection is authorized but silent | Check the source's own webhook or pixel setup     |

`last event` and `no events in 30d` describe data freshness, not authorization. A source can stay authorized while it goes quiet, so read both.

<Warning>
  Check the workspace name before you connect. Connections, events, rules, and API keys belong to one workspace and are not shared.
</Warning>

## Starter rules

We ship pre-built rule blueprints for six sources. Select the flag icon on a connected source card to open them.

| Source with a card | Meta | TikTok | Snapchat | OpenAI | Google |
| ------------------ | ---- | ------ | -------- | ------ | ------ |
| Stripe             | yes  | yes    | yes      | yes    | no     |
| Shopify            | yes  | yes    | yes      | yes    | no     |
| RevenueCat         | yes  | yes    | yes      | yes    | no     |
| Superwall          | yes  | yes    | yes      | yes    | no     |
| Whop               | yes  | yes    | yes      | yes    | no     |
| Checkout Champ     | yes  | yes    | yes      | yes    | no     |

Google Ads has no blueprints. Google needs a conversion action ID that differs per workspace, so you pick it yourself.

Blueprints exist for ClickFunnels too. Reach them by creating the rule by hand in **Conversions**.

## Verify

1. Open **Sources**. Confirm your revenue source shows a recent `last event` time.
2. Confirm your ad platform card shows no `needs primary account` text.
3. Open **Conversions**. Confirm one row exists for your rule.
4. Confirm that row's status reads `sent`.

## When it does not work

| Symptom                                 | Cause                                            | Check                                     | Fix                                     |
| --------------------------------------- | ------------------------------------------------ | ----------------------------------------- | --------------------------------------- |
| Card reads `no events in 30d`           | The source never posted a webhook                | The webhook URL in the source's dashboard | Repaste the URL. Fire a test webhook    |
| Card reads `needs primary account`      | The account step was skipped                     | The card's button                         | Select **select account**               |
| Card reads `action required`            | The token expired or lost access                 | The error text on the card                | Select **disconnect**, then reconnect   |
| Card stuck on `deleting`                | Cleanup stalled                                  | The card                                  | Select **retry**                        |
| Source connected, **Conversions** empty | No rule matches the event                        | The trigger event name in **Events**      | Correct the rule's trigger event name   |
| Wrong workspace has the connection      | You connected while another workspace was active | The workspace name in the sidebar         | Disconnect. Switch workspace. Reconnect |

## Next

* [Conversion delivery](/advanced/conversion-delivery): what a rule does between the event and the ad platform.
* [Conversions](/product/conversions): read a delivery row.
* [Meta Ads](/integrations/meta-ads): the deepest per-platform reference.
