{"id":6653,"date":"2026-08-21T13:21:40","date_gmt":"2026-08-21T11:21:40","guid":{"rendered":"https:\/\/tulipemedia.com\/?p=6653"},"modified":"2026-08-21T13:21:40","modified_gmt":"2026-08-21T11:21:40","slug":"tunnel-acquisition-prospection-instagram-facebook-ads","status":"publish","type":"post","link":"https:\/\/tulipemedia.com\/en\/tunnel-acquisition-prospection-instagram-facebook-ads\/","title":{"rendered":"How to create a simple automated acquisition funnel from Meta Ads to Zoho Campaigns (Tutorial)"},"content":{"rendered":"<div class=\"wlx-intro\">A meta ad that generates leads is good. Leads that receive a response within a minute, then a follow-up every few days without you having to think about it, are better. I set up this funnel to <a href=\"https:\/\/tulipwork.com\/fr\/orderstock-pro\/\" target=\"_blank\" rel=\"noopener\"><strong>OrderStock<\/strong><\/a>, This is my inventory management tool for restaurants and retailers, and I document it here from start to finish. It takes about a day, and you don&#039;t have to write a single line of code.<\/div>\n<h2>What we are going to build<\/h2>\n<p>The principle can be summed up in one sentence: <strong>Meta captures the lead, a connector pushes it into a Zoho Campaigns list, and a Campaigns workflow automatically unfolds the email sequence.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-6654\" src=\"https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-791x1024.png\" alt=\"\" width=\"791\" height=\"1024\" title=\"\" srcset=\"https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-791x1024.png 791w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-232x300.png 232w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-768x995.png 768w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-1186x1536.png 1186w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-1581x2048.png 1581w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-9x12.png 9w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-600x777.png 600w, https:\/\/tulipemedia.com\/wp-content\/uploads\/sites\/3\/2026\/08\/tunnel-acquisition-meta-zoho-campaigns-scaled.png 1976w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Three tools, two free accounts out of three, and only one rule to follow: each component does only one thing. Meta captures. The connector transports. Campaigns sends. As soon as you try to make a single component do two things, it becomes unmanageable.<\/p>\n<div class=\"wlx-info\">\r\n        <div class=\"wlx-info-label\">Call on my services<\/div>\r\n        <\/p>\n<p><strong>If you&#039;re looking to automate your sales funnel and install a simple, practical, and effective low-code solution, <a href=\"https:\/\/tulipemedia.com\/en\/contact\/\">Feel free to contact me, tell me your budget and I&#039;d be happy to do it for you.<\/a>.<\/strong><\/p>\n<p>\r\n    <\/div>\n<h2>Step 1 \u2014 The Meta Form<\/h2>\n<p>In the Ads Manager, choose the objective <strong>Prospects<\/strong>, then create a <em>instant form<\/em> (Instant Form) attached to your advertisement. This is the form that opens directly in Facebook or Instagram, without leaving the application \u2014 which explains its conversion rates much higher than a classic landing page.<\/p>\n<p>Ask for the bare minimum. I kept four fields: first name, email, company name, and a multiple-choice question about their inventory management. Each additional field reduces the volume, and you won&#039;t have time to analyze ten pieces of information per lead anyway.<\/p>\n<div class=\"wlx-warning\">\r\n        <div class=\"wlx-warning-label\">Attention<\/div>\r\n        Add an explicit consent checkbox to receive your emails, and a link to your privacy policy. A meta lead is not a subscriber: it&#039;s someone who has requested something specific. Without this checkbox, your sequence has no legal basis in Europe.\r\n    <\/div>\n<h2>Step 2 \u2014 Lists in Zoho Campaigns<\/h2>\n<p>Create a separate list for each language, not a single list for everyone. At my place: <em>Leads FR<\/em> And <em>Leads EN<\/em>. This is the point I most regret not having decided on sooner.<\/p>\n<p>The reason is simple: Zoho Campaigns triggers its workflows upon entry into a list. One list = one workflow = one language. If you mix them, you&#039;ll have to add conditions to the workflow, wasting half a day for a less readable result.<\/p>\n<p>Take this opportunity to create your custom fields (brand, source, date added, etc.). A small detail that cost me an hour: <strong>Avoid using accents in field labels<\/strong>, They don&#039;t work well in API calls.<\/p>\n<h2>Step 3 \u2014 The bridge between Meta and Campaigns<\/h2>\n<p>This is the only component that requires a third-party tool. Two options work:<\/p>\n<ul>\n<li><strong>Zapier<\/strong> \u2014 trigger <em>Facebook Lead Ads: New Lead<\/em>, action <em>Zoho Campaigns: Add Contact to List<\/em>. The free plan provides 100 tasks per month and two-step scenarios, which is exactly what we need here.<\/li>\n<li><strong>Make<\/strong> \u2014 same logic, 1,000 operations per month free of charge, with two scenarios active simultaneously.<\/li>\n<\/ul>\n<p>In both cases, allow ten minutes: you connect your Facebook page, choose the form, connect Zoho, choose the list, and match the fields one by one.<\/p>\n<div class=\"wlx-info\">\r\n        <div class=\"wlx-info-label\">Namely<\/div>\r\n        The two free plans check for new leads every 15 minutes. For a B2B funnel, this is perfectly adequate. If you&#039;re selling something where real-time responsiveness is crucial, you&#039;ll need to upgrade to a paid plan.\r\n    <\/div>\n<h2>Step 4 \u2014 The double opt-in trap<\/h2>\n<p>This is the step that causes most tunnels to fail, and it is not written anywhere visibly.<\/p>\n<p>By default, a contact added to a Zoho Campaigns list <strong>via API or import<\/strong> They receive a confirmation email, but they only actually enter the list if they click on it. As a result, you lose half your leads to a second confirmation they don&#039;t understand, since they&#039;ve already filled out a form.<\/p>\n<p>This behavior is not driven by an API call parameter. It depends on a setting in the list: the status of its registration form. The Zoho documentation is explicit\u2014with the registration form active, the contact receives a confirmation; with the form disabled, they are added without any confirmation.<\/p>\n<div class=\"wlx-important\">\r\n        <div class=\"wlx-important-label\">Important<\/div>\r\n        On your advertising lead lists, <strong>disable the list registration form<\/strong>. Consent has already been obtained via the Meta form, so you&#039;re in compliance. Keep double opt-in for your newsletter lists, where registration takes place on your website: this protects your sender reputation.\r\n    <\/div>\n<h2>Step 5 \u2014 The workflow that unfolds the sequence<\/h2>\n<p>In Campaigns, go to <em>Automation \u2192 Workflows<\/em> and create a workflow for each list.<\/p>\n<p>The trigger is <strong>the list entry<\/strong>, with the &quot;new contacts only&quot; option. This option is your safety net: the day you import an old CSV file, your old contacts will not receive the sequence all at once.<\/p>\n<p>Next, we alternate between waiting and sending messages. My sequence, based on five emails:<\/p>\n<ol>\n<li><strong>J0<\/strong> \u2014 the immediate answer to what was requested: the demo. This is the only email that 100% of the leads will open.<\/li>\n<li><strong>Day 3<\/strong> \u2014 Short follow-up: &quot;Have you seen the demo?&quot;\u00ab<\/li>\n<li><strong>Day 8<\/strong> \u2014 the story. Why I created the tool, what I was doing before.<\/li>\n<li><strong>Day 15<\/strong> \u2014 Helpful advice, with no sales pitch. The only email where I don&#039;t sell anything.<\/li>\n<li><strong>Day 25<\/strong> \u2014 the last one. \u00abI\u2019ll leave you alone after this one.\u00bb<\/li>\n<\/ol>\n<div class=\"wlx-tip\">\r\n        <div class=\"wlx-tip-label\">Advice<\/div>\r\n        Set your sending windows between 9 AM and 5 PM. Otherwise, a 3-day delay triggered on a Tuesday at 11 PM will send your follow-up email on a Friday at 11 PM. A personal email arriving in the middle of the night is immediately perceived as automated marketing.\r\n    <\/div>\n<p>Write these emails in <strong>plain text<\/strong>, Not in HTML with a pretty template. They&#039;re supposed to come from a human. A template with a banner and rounded buttons negates the whole effect.<\/p>\n<h2>Step 6 \u2014 Stop the sequence when someone responds<\/h2>\n<p>This is what separates a good sales funnel from an embarrassing one. If a prospect replies &quot;yes, send it to me&quot; and still receives the follow-up on day 8 asking &quot;did you see the demo?&quot;, you&#039;ve lost the sale and some credibility.<\/p>\n<p>Campaigns does not read your email inbox. Therefore, you must, at a minimum, manually remove the contact from the workflow as soon as you process their reply: in the workflow, each contact can be removed via the &quot;leave workflow&quot; action.<\/p>\n<div class=\"wlx-warning\">\r\n        <div class=\"wlx-warning-label\">Attention<\/div>\r\n        Beware of automated replies. A simple &quot;I&#039;m on vacation until August 30th&quot; is not a valid response: if you remove that contact from the sequence, you lose a lead who didn&#039;t ask for anything. Always check the subject line before removing someone.\r\n    <\/div>\n<hr class=\"wlx-divider\">\n<h2>Going further: the scripted version<\/h2>\n<p>The tunnel above is fully clickable, and that&#039;s already more than enough to get started. For my part, I went a step further because I had two needs that no-code didn&#039;t cover.<\/p>\n<p><strong>First need: to deduplicate and finely personalize.<\/strong> The leads arrive in a raw tab of a Google Sheet. An Apps Script script takes them, filters out addresses already known (including those between French and English), sends the J0 email itself, and then pushes the contact to the correct Campaigns list via the API. Along the way, it pre-calculates the salutations: &quot;Hello Marc,&quot; if the first name is known, &quot;Hello,&quot; otherwise; &quot;at Le Comptoir,&quot; if the name is known, &quot;at your establishment,&quot; otherwise. Traditional merge tags can&#039;t do this: they only have a raw fallback value.<\/p>\n<p><strong>Second requirement: automatic sequence output.<\/strong> The script scans the inbox, identifies responses from still-active prospects, updates their status in the Sheet, and removes them from the sequence. It also detects and ignores automated replies, flagging them in a daily summary at 9 PM.<\/p>\n<div class=\"wlx-success\">\r\n        <div class=\"wlx-success-label\">Result<\/div>\r\n        Google Sheets remains the primary source of truth\u2014status updates, history, statistics\u2014and Zoho Campaigns is used only for what it does best: sending and managing unsubscribes. Neither component attempts to replace the other&#039;s work.\r\n    <\/div>\n<p>If this version interests you, <strong>Tell us in the comments<\/strong> I&#039;m preparing a commented script template, which you can adapt to your own spreadsheet and fields. I&#039;ll send it to those who request it.<\/p>\n<h2>What I would do differently<\/h2>\n<p>Three things, if I had to start again tomorrow.<\/p>\n<p><strong>Separate the languages from day one.<\/strong> I did it afterwards, and resuming contacts already in sequence is much more tedious than creating two lists from the start.<\/p>\n<p><strong>Test the entire channel with my own address before launching the ad.<\/strong> A lost real lead means wasted advertising budget. A lost test lead means ten minutes wasted.<\/p>\n<p><strong>Configure SPF, DKIM and DMARC before anything else.<\/strong> It&#039;s tedious, it&#039;s handled by your domain host, and until it&#039;s done, some of your emails go to spam without any warning.<\/p>\n<p>The funnel is running smoothly today without me having to touch it. The only thing that still requires my attention is responding to the prospects who reply \u2014 and that&#039;s exactly where I want to spend my time.<\/p>\n<div class=\"wlx-info\">\r\n        <div class=\"wlx-info-label\">Call on my services<\/div>\r\n        <\/p>\n<p><strong>If you&#039;re looking to automate your sales funnel and install a simple, practical, and effective low-code solution, <a href=\"https:\/\/tulipemedia.com\/en\/contact\/\">Feel free to contact me, tell me your budget and I&#039;d be happy to do it for you.<\/a>.<\/strong><\/p>\n<p>\r\n    <\/div>","protected":false},"excerpt":{"rendered":"<p>Ce qu&rsquo;on va construire Le principe tient en une phrase : Meta capte le lead, un connecteur le pousse dans une liste Zoho Campaigns, et un workflow Campaigns d\u00e9roule la s\u00e9quence d&rsquo;e-mails tout seul. &nbsp; Trois outils, deux comptes gratuits sur trois, et une seule r\u00e8gle \u00e0 respecter : chaque brique ne fait qu&rsquo;une chose. [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":6656,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,18,31],"tags":[],"class_list":["post-6653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-facebook","category-communication","category-instagram"],"_links":{"self":[{"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/posts\/6653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/comments?post=6653"}],"version-history":[{"count":3,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/posts\/6653\/revisions"}],"predecessor-version":[{"id":6658,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/posts\/6653\/revisions\/6658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/media\/6656"}],"wp:attachment":[{"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/media?parent=6653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/categories?post=6653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tulipemedia.com\/en\/wp-json\/wp\/v2\/tags?post=6653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}