Own signals for better ad optimisation
Area: Conversions · Updated: 5 Nov 2026 · Auf Deutsch · All articles
Symptoms
- A Meta ad set optimises on a signal such as “hot visitor” that happens only a few times a week and stays in the learning phase.
- Meta does not allow changing the conversion event of a running ad set.
- Leads alone are too rare and the built-in signals do not match the wanted optimisation goal.
Cause
- The optimisation event is too narrow: Meta needs about 50 events a week per ad set to learn well.
- Built-in signals exist one at a time (one interest tier, one event, one goal), not as a combination.
How to fix it
1. Preview a broader rule
- In the dashboard: Settings › Signals to ad platforms › Own signals › New signal
- With Claude (MCP):
ad_custom_signals_preview{"project":"my-project","name":"InterestedOrHot","include":[[{"kind":"stage","tier":"engaged"}],[{"kind":"stage","tier":"hot"}]]}
Groups are OR, conditions inside a group AND. An interest tier holds from its minimum score, so it includes every higher tier. The preview counts consented persons of the last 30 days, per week, and the lead rate of those persons. Below about 50 a week X3 warns.
2. Free the name of the built-in signal
- In the dashboard: Settings › Signals to ad platforms (table, Meta name)
- With Claude (MCP):
ad_signals_update{"project":"my-project","signals":{"relevance:hot":null}}
If the own signal should carry a name a built-in signal sends today (the ad set optimises on it), reset the built-in signal to its default name first. X3 refuses two signals with the same name because the platform cannot tell them apart.
3. Create the own signal
- In the dashboard: Settings › Signals to ad platforms › Own signals › Save
- With Claude (MCP):
ad_custom_signals_create{"project":"my-project","name":"HotVisitorPlus","providers":{"meta":{"enabled":true},"google_ads":{"enabled":false,"role":"secondary","actionName":null},"linkedin":{"enabled":false},"tiktok":{"enabled":false}},"include":[[{"kind":"stage","tier":"engaged"}],[{"kind":"stage","tier":"hot"}]]}
Name = event name at Meta (letters, digits, _, at most 40, no standard event such as Lead). It goes out once per person the first time the rules hold; when the same person later becomes hot it does not fire again. Mode, consent and the daily cap of the signals apply.
4. Send a test event and check
- In the dashboard: Settings › Signals to ad platforms › Own signals › Send test event
- With Claude (MCP):
ad_signals_send_test{"project":"my-project","provider":"meta","signals":["custom:hot_visitor_plus"]}
Sends one event under the name without person data. The name then appears in Events Manager and can be used for custom conversions.
How to tell it worked
- Meta Events Manager shows the event under the chosen name with source server.
- In the “Own signals” table “Sent (30 d)” rises, at most once per person.
- The ad set gets clearly more optimisation events a week without changing its goal.
Related articles
An own signal is not a conversion: it never counts as a lead in X3. It blends real outcomes and intermediate stages (e.g. “interested or hot”, “quiz started and from Meta”, “appointment”) into one event a campaign can learn from. Always judge a broader rule by the cost per real lead: more volume only helps the algorithm while the group still resembles customers. The lead rate in the preview shows how much the rule dilutes.