Use the campaigns page
Manual campaigns
Manual campaigns let you track traffic from ad networks, affiliate partners, newsletters, influencers, or any other source that can use a campaign URL. PNLight records the click, redirects the user to your destination URL, attributes users when the app reports the click, and sends postbacks for matched events. Manual campaigns are different from synced Facebook campaigns:| Area | Manual campaign | Synced Facebook campaign |
|---|---|---|
| Campaign creation | You create the campaign in PNLight. | PNLight syncs campaigns from Facebook. |
| Spend | You enter costs manually or import a CSV file. | PNLight can sync spend from Facebook. |
| Postbacks | You configure system and app event postback URLs on the campaign. | Campaigns can inherit postbacks and Facebook event mapping from the connected network account, or override them when needed. |
| Tracking URL | PNLight generates a campaign-specific URL with pnlAdsCampaignId. | PNLight generates an account URL with Facebook macros. |
Create a manual campaign
Enter campaign details
Add Campaign Name, Start date, and End date. Use the same date range you plan to review in spend and cohort reports.
Set the redirect URL
Enter Redirect URL override. This is where PNLight sends the click after it records it.
Configure the ad URL
The manual campaign URL includespnlAdsCampaignId. PNLight uses that value to connect clicks, installs, events, costs, postbacks, and analytics to the campaign.
Add the parameters your traffic source can provide to the generated URL. PNLight stores those parameters with the click and forwards them to the redirect URL.
sub_id, click_id, partner, creative, placement, or utm_campaign.
When PNLight redirects the user, it keeps the campaign URL parameters and adds deep_link_value with the PNLight click ID. Your app or deep-link handler can use that value when it needs to associate the install with the click.
Configure postbacks
Postbacks send event notifications from PNLight back to an ad network, affiliate platform, or internal tracking endpoint. PNLight sends postbacks only for users attributed to the campaign. Open a manual campaign and use the postback sections:| Section | Use it for |
|---|---|
| System Events Postbacks | Built-in PNLight events, such as install, purchase, or refund. |
| App Events Postbacks | Custom SDK events sent from your app with logEvent. |
| Field | Description |
|---|---|
| Event name | The PNLight event that should trigger the postback. For app events, use the exact event name sent by the SDK. |
| Postback Url | The full postback endpoint URL. PNLight calls this URL when the event is recorded for an attributed user. |
| Single Use | Sends the app event postback only once per user, campaign, and event name. Use it for one-time conversions. |
Substitute parameters in postback URLs
Use placeholders in query parameter values when the receiving system needs values from the original click URL.| Placeholder | Value |
|---|---|
{{pnlClickId}} | The PNLight click ID for the matched user. |
{{sub_id}}, {{click_id}}, or another click parameter | The value with the same name from the original campaign URL. |
| AppsFlyer parameters | Values from the AppsFlyer attribution payload when AppsFlyer wins attribution. |
Inherit or override synced campaign delivery settings
Synced Facebook campaigns can inherit delivery settings from the connected network account. This keeps postbacks and event mapping consistent across many campaigns. Use Override on the campaign when one campaign needs a different setup for:- System event postbacks.
- App event postbacks.
- Facebook event mapping.
Enter campaign costs manually
Manual campaign costs power spend, CPI, CPT, CAC, ROI, ROAS, and cohort payback views. Enter costs after you create the campaign.Set the reporting range
Update Start date and End date if the campaign dates changed. Save the campaign before you edit daily costs.
Enter daily spend
Fill the cost amount for each day. Use the copy action next to a day to fill future dates with the same amount.
Use monthly or total distribution
Enter a month total or full campaign total when you want PNLight to distribute spend across the selected dates.
date,cost rows and no header row. Dates must use YYYY-MM-DD, and costs must be decimal currency values.
Verify the setup
After you save the campaign, test the full flow before buying traffic:- Open URL for your Ad with sample parameters and confirm that it redirects to Redirect URL override.
- Confirm the redirected URL includes the parameters you expect.
- Install or open the app from the test flow and confirm the user appears in Customers with the campaign attribution.
- Trigger one system event or app event that has a postback.
- Open the customer profile and check whether the postback was sent.
- Review Campaigns, Analytics, and Cohorts to confirm spend, installs, revenue, and ROAS use the campaign.
Common checks
- Manual campaigns use URL for your Ad with the correct
pnlAdsCampaignId. - Synced campaigns come from the correct ad network and account.
- Manual campaigns have Redirect URL override before live traffic starts.
- Disabled campaigns are excluded from filters and analytics where expected.
- Costs match the reporting period you are reviewing.
- Postback event names match the system event or SDK app event you want to send.
- Event mappings are configured on the ad network or campaign when Facebook Conversions API depends on them.