<signals>
The line decides where the service gets opens and clicks from — and half of its metrics depend on that, including the health score. The default is no.
| Value | What it means |
|---|---|
| no (default) | events are not collected at all |
| external | you send the events yourself, with your own tools |
| sparkpost | the engine itself inserts links and pixels into messages |
🔴 The sparkpost value changes your messages. The engine rewrites links to its own and inserts transparent pixel images — that is, recipients’ clicks go through someone else’s domain, and opens are registered on someone else’s side.
Five neighboring lines work only with sparkpost: enable-click-tracking, enable-top-open-pixel, enable-bottom-open-pixel, tracking-domain, use-https. With other values they do nothing.
Tagging can be limited from the message itself: the data-msys-clicktrack=”0″ attribute excludes a link from tracking, and data-msys-linkname gives it a name in reports (up to 63 characters). The engine removes both attributes from the message.
The values yes and true mean external — they are kept for compatibility.
The choice here is short:
| Value | When |
|---|---|
| no (default) | tracking is not needed |
| external | you count opens yourself and send them to the service |
| sparkpost | you are ready to hand links and pixels over to the vendor |
# the engine itself will insert links and pixels — the domain in the message becomes someone else's <signals> api-key 0123456789abcdef012345678901234567890123 engagement-tracking sparkpost tracking-domain track.mydomain.com </signals>
what people get wrong and how it ends2 mistakes▶
our experience
§ 11.1.6.2.3
2 relations
grep -i "signals\|html" /var/log/pmta/log | tail -20
3 articles
◇Hand a message to a webhook instead of a receiverThe queue sends the message as a POST request in the form of a JSON object; only a 2xx response counts as success.◇The node can insert pixels and rewrite links by itselfIn the vendor’s tracking mode the engine parses outgoing HTML, rewrites links to the tracking domain and inserts open pixels — with a choice of what to do if the markup cannot be parsed.◇Markup parsing and editingOpen and click tracking in sparkpost mode edits the message markup with the built-in gumbo-parser; by default a message whose markup could not be parsed is bounced.