External PWA
External PWA
External PWAs allow the use of third-party PWA application builders (e.g., PWA.Group, TSL.app, etc.) instead of the platform's built-in builder. You create a PWA on an external service, and Adset.Pro takes care of traffic attribution, generating the tracker link, and sending postbacks about conversions back to the external service.
The section is located in the PWA, Apps & Landings → External PWA menu (/app/pwa/external) and is available on higher tariffs (Buying and Business lines of Social and Tracker).
Why is this needed
-
Any external PWA services — work with PWAs from any service, without being tied to a single vendor.
-
Fair A/B tests — compare different PWA services under the same conditions (one campaign with the same sets and filters).
-
Cross-statistics — the entire funnel from click to conversion in one place.
-
Adset.Pro as a tracker — use the platform as a full-fledged tracker for external PWAs.
How it works
-
The user clicks on the ad → lands on the tracker.
-
The tracker redirects traffic to the external PWA service (via your PWA URL + service parameters).
-
The user installs the PWA on the external service.
-
The external service redirects the user back to the tracker link.
-
The tracker records the installation (event
EXTERNAL_INSTALL) and directs the user to the offer according to your Flow. -
Upon conversion (registration, deposit), the platform sends a postback to the external service (if a Postback URL is specified).
Creating an external PWA
On the External PWA page, click “Add External PWA” — a three-step wizard opens. Move between steps with “Next” and “Back” and save the PWA with “Save”. Only the name and the PWA URL are required.
Step 1. Service & postback
Field | Required | Description |
|---|---|---|
Name | Yes (min. 2 characters) | System name to identify the PWA in your account (for example, “Casino Slots — PWA Storm”). Not shown to users. |
Active | — | Switch next to the name. An inactive PWA is not used in tracking. |
External Service | No | A PWA service from the catalog. It defines the Postback URL template, the parameters added to the PWA URL and the macros in the tracker link. |
Postback URL | No | Where the platform sends conversion postbacks. If the field is empty, it is filled from the template when you pick a service. If the field is already filled and differs from the template, a “Fill from template” button appears next to the field name. |
Delegate Facebook CAPI to the external service | — | On by default. While Postback URL is filled, our Facebook pixels are not sent for clicks of this PWA — the service itself reports conversions to Facebook. Turn it off to keep Facebook CAPI on our side. The postback to the external service is sent in both cases. |
Step 2. Return domain
Pick a Tracker Domain — one of your domains used to generate the return link. The “Generated Tracker URL” appears below the field (see the next section).
Step 3. Service URL
In the PWA URL field, paste the link to your PWA from the external service (for example, https://domain.com/). The service parameters are added on our side: below the field you see the “Final URL with service parameters” — the tracker sends users to this address to install the PWA.
Tracker link (post-install redirect)
At the “Return domain” step, after you pick the tracker domain, a ready link appears in the “Generated Tracker URL” block. Specify it in the external PWA service as the return link after installation (post-install redirect) — that is, the link to the offer to which the service sends the user. Later you can copy it from the list: row menu “⋮” → “Copy URL”.
Link format:
https://{domain}/track/{campaignId}/eflow?clickId={clickId}&eid={eid}
-
{campaignId},{clickId},{eid}— macros that the external service will replace with real values. When a service from the catalog is selected, the macros are automatically filled in the format of that service. -
eid(External Event ID) — the event identifier on the external service side (for example, the event time); it is saved and can be used in the Postback URL via the macro{postback.eid}.
Click the copy icon to copy the link to the clipboard.
Setting up Postback URL
The Postback URL determines where Adset.Pro will send the conversion notification. The field is optional: without it, tracking and attribution work, but postbacks to the external service are not sent.
Available macros
Macro | Description |
|---|---|
| Our unique click ID (clickId) |
| External event ID from the PWA service (eid) |
| Event type: |
| User's country |
| Short event name: |
| Conversion payout |
| Payout currency |
Variable macros (event mapping)
To substitute different values for different types of events, use the syntax:
{event.event_type: CPA_HOLD=reg CPA_ACCEPT=dep}
This will substitute reg for registration and dep for deposit. If an event type has no pair, the type itself is substituted (for example, CPA_REDEP).
Important: in the {event.event_type: …} macro, use full type names — CPA_HOLD, CPA_ACCEPT, CPA_REDEP. Short names (hold=reg accept=dep) will not match, and the external service will receive CPA_HOLD instead of reg. Short names work with the {postback.event} macro: {postback.event: hold=reg accept=dep}.
The postback to the external service is sent only for CPA conversions: registration, deposit and redeposit.
Example of a complete Postback URL
https://pwastorm.com/postback?click_id={postback.eid}&status={event.event_type: CPA_HOLD=reg CPA_ACCEPT=dep}
Many services in the catalog already have a postback template: check it and replace places marked as REPLACE with values from your account. If the Postback URL was filled earlier and contains hold=reg accept=dep, replace it with CPA_HOLD=reg CPA_ACCEPT=dep.
Using external PWA in a campaign
To direct traffic to an external PWA:
-
Open the campaign for editing.
-
In the flow settings (Flow), select the created external PWA in the PWA field. The PWA type will automatically become
external. -
Save the campaign.
Then the external PWA is used in the usual Flow of the tracker — just like a regular PWA.
A/B testing of services
Create several external PWAs (e.g., on different services) and distribute them across different flows/sets of one campaign with weights. The traffic will be divided according to the specified shares, and you can compare the effectiveness in the statistics of one funnel.
List and management
On the page /app/pwa/external, a table with all external PWAs is displayed. Columns: Name, Service, PWA URL, Tracker Domain, Postback URL, Tags, Owner, Status, Created.
Filters: search by name, owner, status (active/inactive), service, tags.
Row actions (menu “⋮”): Edit, Manage tags, Copy URL, Delete.
-
Deletion = deactivation. The PWA is not physically deleted but is moved to the status “Inactive” (the Active toggle in the editing dialog does the same).
-
Bulk actions: assigning tags and deactivating for selected rows.
Statistics and billing
Installations in external PWAs are recorded as a separate event EXTERNAL_INSTALL and do not mix with the statistics of your own PWAs:
-
Separate metric External Install and conversions Click → External Install, External Install → Reg, External Install → Dep.
-
The overall metric Install in reports sums up internal and external installations, so the funnel remains complete.
-
Pixels and postbacks for external installations work just like for regular PWAs. The exception is Facebook pixels when “Delegate Facebook CAPI to the external service” is on (see the questions below).
-
Billing: external installations are not charged as your PWA installs (the PWA_INSTALLS metric does not account for them).
Frequently asked questions
What happens to Facebook pixels when using external PWA?
It depends on the “Delegate Facebook CAPI to the external service” switch (on by default). While it is on and Postback URL is filled, our Facebook pixels are not sent for clicks of this PWA — the external service reports conversions to Facebook. If the switch is off or Postback URL is empty, Facebook pixels work as usual. Other pixel types (URL, TikTok, Telegram) work as usual in any case.
Can I work without a Postback URL?
Yes. Without it, tracking and attribution work, but the platform does not send postbacks to the external service.
What is eid?
eid (External Event ID) is an identifier that the external PWA service passes when returning the user. It is saved and can be used in the Postback URL via the macro {postback.eid} for correlating events on the service side.
How long is the clickId → eid binding stored?
7 days. During this time, all conversions for this click will contain the correct eid in the postbacks.
