This project is not covered by Drupal’s security advisory policy.
Forms Ads Manager is for marketing and sales teams who send paid social traffic, QR codes or email campaigns to a Drupal site. Every click should land on a short, focused form, not a generic contact page. It works in the spirit of the instant forms of the big ad platforms, keeping form, responses and credentials on your own site.
The day you install it, a section called Instant forms appears under Administration. You build a form in the visual builder, publish it and share its link. Every response arrives with its answers, its score and, if you keep the UTM switch on, the campaign it came from. It can travel on to your inbox, Slack, Zapier, Make, a webhook or Sales Pipeline AI. The interface ships in English with a Spanish translation.
What you get
Build the form
- A visual builder with a live preview. Seven sections on the left, a live phone preview of the form on the right.
- Steps and per-answer jumps. Each option can jump to another step, to the end or to the not-qualified screen; the higher-intent form type adds a review screen before sending.
- Scoring inside the questions. Options carry points (negative ones too), text questions can be flagged as intent signals, and a minimum threshold decides who qualifies.
- Three outcome screens you write yourself. Qualifies, does not qualify and paused, each with its text and up to six buttons: a link, a phone number, a file download.
- Your own look. Use the brand colours or set the card style, radius, colour tokens and background image per form.
Publish, measure, deliver
- A public page that stands alone. Served at
/f/{slug}with no site theme around it, under a custom address if you like; old addresses keep working. - Measurement per form. Meta pixel and Conversions API, GA4, Google Tag Manager, Google Ads with enhanced conversions and LinkedIn Insight, for qualified responses or for all.
- Delivery channels. A copy by email, Mailchimp, a Slack incoming webhook, a Zapier or Make hook, and a custom webhook signed with HMAC when you set a secret.
- Anti-spam that retains rather than rejects. A honeypot and a per-IP limit send suspicious responses to a tray, where one click accepts them as leads.
- Metrics and export. Views, leads and conversion per form, a sparkline, filters, and a CSV of every response.
How it works
A form is a revisionable content entity (fam_lead_form) with three states: draft, published and paused. Publishing checks the essentials and compiles a Webform, so every response is a regular Webform submission. After the first response the structure freezes and only the texts can change; duplicate it for a new structure, so old responses always match their questions.
The visitor never sees Drupal. The page at /f/{slug} renders from embedded JSON with a small script: steps with a progress bar, jumps and prefill from the query string. On submit the server validates the visible questions again, computes the score, stores the response and returns the outcome screen; only then do the pixels fire.
Use cases
- A lead form for a Meta or LinkedIn campaign that qualifies visitors with three questions and shows a booking link only to those who pass.
- A QR code on a flyer or a stand that opens a two-step form with the event name already in the UTM.
- A campaign that ended: pause the form and its old link shows the paused screen you wrote.
Getting started
- Grant
administer forms ads managerto those who build and publish, andview forms ads managerto those who only read the numbers. - Open Administration » Instant forms (
/admin/forms) and create a form: name, headline, logo, questions, step separators. - Fill in the privacy section (consent text, privacy policy link, responsible party, optional marketing checkbox), then write the outcome screens.
- Optionally add pixel identifiers and delivery channels.
- Publish, copy the public link from the list and use it in your campaigns. Review the retained tray at
/admin/forms/retained. - Adjust the anti-spam limits at Administration » Configuration » Content authoring » Forms Ads Manager (
/admin/config/content/forms-ads-manager).
Requirements
- Drupal 11.1 or newer, and the PHP version it requires (8.3); core User, System, File, Options and Path alias.
- Webform 6.3 or later, which stores every response.
- Central Connect AI SDK, for the shared admin header, icons and bell.
- Optional: Sales Pipeline AI to turn each response into a CRM lead.
- No external service is required. Install with
composer require drupal/forms_ads_manager.
Privacy and security
- Responses are Webform submissions on your site: answers, score, the consent text and its time, and the visitor's IP. While the form's Save the UTM switch is on (the default), UTM parameters, gclid, fbclid, referrer and landing page are stored too.
- Deleting a form deletes its compiled webform, responses and public addresses. There is no automatic retention period: you decide when a form and its responses go.
- Pixel identifiers and delivery credentials live in the form entity, which is content, so they never reach exported configuration. The compiled Webform is ordinary configuration and carries the question structure only.
- Client-side pixels fire only on the outcome screen, once. With the form's consent-only switch on (the default) they wait for a positive signal from EU Cookie Compliance or COOKiES Consent Management; switch it off and they fire for every visitor. With a Conversions API token, the hashed email and phone and the IP go to Meta under the same rule.
- No request leaves the site except the channels and pixels you configured for that form; a failed delivery is logged and attempted at most three times.
- Administrative saves carry the CSRF request header token; the public submit is guarded by a honeypot and Drupal's flood control. The CSV export is for administrators only; every cell is neutralised against spreadsheet formulas.
Part of the Central Connect AI suite
The suite modules share one administration look and, optionally, one central service for AI and support. This module is complete on its own: nothing in it is locked, it uses no AI and it calls no central service. It depends on the Central Connect AI SDK for the shared header, icons, ideas dialog and the bell that rings when a lead is captured. Users holding the SDK permission view ccai ai cost also see the suite's AI usage meter in the header; this module never adds a line to it. Sales Pipeline AI is the optional destination: each response becomes a lead in the pipeline and column you chose, deduplicated by email.
Similar projects and how this one differs
- Webform is the form builder this module depends on, not an alternative: it stores the responses; this module adds the landing, jumps, scoring, outcome screens and pixels.
- Webform Score and Webform Quiz score the answers of a Webform; they have no per-answer jumps, qualification screens or campaign attribution.
- Webform Mailchimp, Webform - Slack integration and Webform GoogleSheets are single-channel handlers for forms built in Webform; this module bundles its own channels in the builder.
- Google Tag manages tags site-wide; this module injects measurement only on each form's outcome screen.
- Honeypot rejects suspicious submissions on any form; here the honeypot and flood limit retain them in a tray you can review.
- Landingi Landing Pages builds pages on an external service; this module keeps landing page and responses on your Drupal site.
Development
Parts of this module were written with the assistance of AI-based coding tools, as required by the policy on the use of AI when contributing to Drupal. All the code has been read, corrected, tested and is maintained by the human maintainer listed below, who takes full responsibility for it.
Maintainers and sponsor
Maintained by pedroromán and sponsored by Tangram Consulting. Issues, ideas and contributions are welcome in the issue queue.
Project information
- Project categories: Performance, Site structure, User engagement
- Created by pedroromán on , updated
This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities.