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

# Source

> Where the campaign's leads come from, webhook, CSV, Meta Lead Ads or Shopify.

**Source** is where contacts enter the campaign. You pick the type once, when you create the campaign; this tab is where you configure it. Once leads arrive, they show up in [Leads](/en/campaigns/leads).

<Tabs>
  <Tab title="HTTP Webhook">
    Leads arrive in real time from any system that can send an HTTP request.

    <img src="https://mintcdn.com/speaklouderpl/OQ-ItIDCFyGxwaZz/images/en/source-webhook.png?fit=max&auto=format&n=OQ-ItIDCFyGxwaZz&q=85&s=a73df25c87248dfec1cd25465d35dd20" alt="Webhook source with POST address, token and custom fields" width="2880" height="1672" data-path="images/en/source-webhook.png" />

    **1. Webhook address**: SpeakLouder generates a ready-made URL with your token already in it. Point anything you like at it (a website form, Make.com, Zapier, your own backend) and have it send a **POST** request with the lead's details. **Make.com integration** opens the ready-made connection to Make.

    **2. Custom fields**: extra data you want to hand the agent during the call, e.g. `product_name`. Add a key, pick its type and click **Save fields**. Keys allow lowercase letters, digits and underscores; anything else is converted for you.

    <Warning>
      The address contains your private token, treat it like a password. Anyone who has it can push leads into your campaign. Don't paste it into public repos, screenshots or support tickets.
    </Warning>

    <Tip>Custom fields you send show up on the lead card under **Form data**, and you can use them in the agent's prompt as `{{placeholders}}`.</Tip>
  </Tab>

  <Tab title="CSV Upload">
    You upload a ready list of contacts from a spreadsheet.

    <img src="https://mintcdn.com/speaklouderpl/OQ-ItIDCFyGxwaZz/images/en/source-csv.png?fit=max&auto=format&n=OQ-ItIDCFyGxwaZz&q=85&s=91cef63a40ed594525dc7a98e6e37392" alt="CSV import drop zone" width="2880" height="1672" data-path="images/en/source-csv.png" />

    Drag a CSV file onto the drop zone or click **Browse files**. After the upload you map the columns in your file to lead fields (name, phone, email and so on).

    <Note>The campaign has to be paused to upload a CSV. That's deliberate, it stops the agent from calling half an imported list.</Note>

    <Tip>Start with a small test file and check the column mapping before you upload the whole list.</Tip>
  </Tab>

  <Tab title="Meta Lead Ads">
    Leads from lead-form ads on Facebook and Instagram, delivered the moment someone submits the form.

    <img src="https://mintcdn.com/speaklouderpl/OQ-ItIDCFyGxwaZz/images/en/source-meta-forms.png?fit=max&auto=format&n=OQ-ItIDCFyGxwaZz&q=85&s=1c46a4664a996941676d83b3d8b05fd3" alt="Meta Lead Ads source with connected Facebook Pages and form picker" width="2880" height="1672" data-path="images/en/source-meta-forms.png" />

    **1. Connected Facebook Page**: one connection per account, shared by every Meta campaign. You set it up in [Integrations](/en/integrations).

    **2. Choose the source forms**: click **Load forms from Facebook** and tick the forms this campaign should take leads from. You can use several forms in one campaign, but a single form can only feed one campaign.

    **3. Fields on each lead**: the question keys from the forms you picked. Use them in the agent's prompt as `{{placeholders}}`.
  </Tab>

  <Tab title="Shopify">
    For Shopify stores. The agent calls customers who **abandoned their cart** to remind them to finish the purchase.

    <img src="https://mintcdn.com/speaklouderpl/OQ-ItIDCFyGxwaZz/images/en/source-shopify.png?fit=max&auto=format&n=OQ-ItIDCFyGxwaZz&q=85&s=4ec70dd0fa3fcf0e083429352a9b5d64" alt="Shopify connection guide, step one" width="2880" height="1672" data-path="images/en/source-shopify.png" />

    The tab walks you through five steps: install the SpeakLouder app in Shopify, import the ready-made flow in Shopify **Flow**, open it, connect it to this campaign and switch it on.

    <Note>
      The names of the abandoned items arrive in a single `product_names` field, separated by commas. It's set up for you, you don't need to add a custom field for it, and you can use `{{product_names}}` in the agent's prompt right away.
    </Note>
  </Tab>
</Tabs>
