Knowledge base

PMTA knowledge base›Block <signals>›Directive§ 11.1.6.2.2

upload-url

<signals>

The service address the data goes to
in the configuration this is a lineupload-url the vendor's ingest endpointinside the block <signals>
Where exactly your data goes

The address to which the node sends accounting data. The default is the vendor service’s address, https://api.sparkpost.com/api/v1/ingest/events.

Usually there is no need to set it. The default is right for the main case; the line exists for private installations and, probably, for European hosting.

🔴 It is worth understanding what exactly goes out. The vendor stipulates: there is no need to choose which record types and which fields to upload — the engine configures this itself. So the whole set the service needs goes out, and you do not control its composition.

The main trap is not noticing that data leaves the perimeter. This is one of two node surfaces that send accounting content outside (the other is the accounting block’s webhook): recipient addresses, receiver responses, subjects when tracking is enabled. They can be anonymized only with privacy-policy, and even then partially.
What the Hub does. It does not write it: we do not use export to external analytics. The fleet’s events reach us directly, through the accounting webhook, and there is no reason to hand them outside.
Recommended values

The choice here is short:

Value When
do not set (default) the ordinary case
your own address a private installation of the service
The default and the fact that the engine chooses the composition of uploaded data itself are from the manual (§ 11.1.6, § 11.1.6.2.2).
Example configuration
# the default, written out explicitly
<signals>
    api-key 0123456789abcdef012345678901234567890123
    upload-url https://api.sparkpost.com/api/v1/ingest/events</signals>
Writing out the default is worthwhile where it matters that the address is visible to whoever reads the configuration.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
▲

Common mistakes and problems

what people get wrong and how it ends1 mistake▶

Changing the address without checking it with the service

our experience

What it costsThe data will go nowhere and pile up on disk until the free space threshold triggers — and then it will be deleted irrecoverably.
How to spot itUpload files pile up, analytics is empty.
How to do it rightReturn to the default or check the address against the service’s documentation.
Compatibility
PowerMTA 6.0
described in the manual of this version · platform: any
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
Reference data
Syntax
upload-url <url>
Values
an address of the form https://…
Default
the vendor's ingest endpoint § 11.1.6.2.2
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<signals>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
There is no inheritance: the line lives inside <signals>, and there is only one such block on a node. The export coverage by stream is set not here but with the enable-signals line, which has three levels.
How to check on the node
Where the data goes is visible from the node’s connections:
ss -tnp | grep -i pmta | head
Outgoing connections to the service address mean the upload is running. Their absence means it is not configured or cannot get through.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Node security