Documentation
Everything you need to know about Soniurl
πGetting Started#
Connecting Facebook#
First Synchronization#
After Facebook authorization, Soniurl fetches the account structure in the background: ad accounts, Business Managers, and fan pages. This process takes 1-3 minutes.
The Setup Wizard will then open automatically so you can choose which accounts and pages to track. After that, regular data synchronization begins (campaigns, ad sets, ads, metrics). The sync interval depends on your plan β from 1 minute (Business) to 15 minutes (Free).
Setup Wizard#
After the Facebook profile data is loaded, the Setup Wizard opens automatically:
πStatistics#
KPI Cards#
The top of the Statistics page shows key performance indicators as cards with current values and trends compared to the previous period.
Performance Grid#
The main data table shows campaigns, ad sets, and ads with their metrics in a tree hierarchy. Four view modes available: Tree (hierarchy), By Date (daily breakdown), Audience (breakdowns), and Drill (multi-level drill-down).
Columns are sortable β click any column header to sort. On a computer you can also reorder columns by dragging them and resize by dragging the column borders; on tablets and phones the order is fixed so that swiping the header scrolls the table.
Charts#
Switch to the "By Date" view mode to see line charts for your metrics over time: spend, impressions, clicks, CTR, CPC, and CPM. A conversion funnel visualization is also available.
Hover over any data point to see the exact values. Use the period selector to zoom into specific date ranges.
Filters#
Use filters to narrow down the data you see:
CSV Export#
Export your statistics data to a CSV file for use in spreadsheets or other tools.
Sync & Send Costs#
Soniurl automatically syncs your Facebook ad data at regular intervals. The sync interval depends on your plan β from 1 minute (Business) to 15 minutes (Free).
If you use a tracker (Keitaro, Binom, etc.), Soniurl can automatically send cost data to it. This lets you see accurate ROI and profit in your tracker.
πΌAd Accounts#
Ad Accounts Table#
The Ad Accounts page displays all connected ad accounts in a grid. Use the profile picker at the top to filter by Facebook profile or Business Manager. Default visible columns:
Additional columns are available in the Columns panel: Campaigns/Adsets/Ads count, Pixels, Spend Cap, Balance, Age, Created date, Tax Status, Disable Reason, and more. Accounts can be grouped by FB Profile or Business Manager.
Send Costs to Tracker#
Once your tracker is configured in Settings β Tracker (see the Tracker Integration section), you can send cost data directly from the Ad Accounts page.
Auto-Refresh#
Auto-refresh keeps your ad account data up to date automatically. The sync interval depends on your plan (from 60 min on Free to 1 min on Business).
To enable or disable auto-refresh: select accounts using checkboxes, then click the "Auto-Refresh" button in the floating action bar. Accounts with auto-refresh enabled show a purple "AUTO" badge next to their name.
Commissions#
If you manage accounts for clients, you can set a commission percentage that is factored into the statistics. Select accounts using checkboxes, click "Set Commission" in the floating action bar, and enter a percentage (0β100%).
Accounts with a commission show an orange percentage badge next to their name. The commission is applied to all spend from those accounts in the Statistics view.
π€FB Accounts#
Profile Management#
The FB Accounts page displays all connected Facebook profiles in a table. Each row shows the profile's assets and status at a glance.
Table columns:
Available actions:
Business Manager Structure#
The table organizes each profile's assets into expandable columns. Personal Ad Accounts shows accounts owned directly by the user. Business Managers shows BMs with their ad account counts and spend limits.
Click any expandable cell to reveal the full list. Each ad account shows its status (Active, Disabled, Unsettled), currency, timezone, and spend cap. Each BM shows a direct link to Facebook and its creation date.
Renaming#
You can give custom names to your Facebook profiles within Soniurl. This doesn't change anything on Facebook β it's just a local label for easier identification.
πPages#
Managing Fan Pages#
The Pages section shows all Facebook fan pages accessible through your connected profiles. Pages are displayed in a table with grouping by FB Profile and Business Manager.
Four stats cards at the top show key metrics:
Table columns: Page Name (with avatar, ID, token status, BM/Personal badge, Facebook link), Monitoring (ON/OFF), Auto-Clean (ON/OFF), Clean Mode (Hide/Delete), Followers, Published (YES/NO), Comments, Today.
Profile Filter#
Use the profile picker dropdown at the top to filter pages by source:
The picker shows a tree structure: each profile expands to show its BMs and a Personal group. Token status is indicated by a colored dot (green = active, amber = expiring, red = expired). The active filter is saved in the URL for bookmarking.
Monitoring (Webhooks)#
To track comments on a page, enable monitoring. This subscribes the page to Facebook webhooks so new comments appear in real time.
Use the floating action bar at the bottom: select pages with checkboxes, then click Enable Monitoring or Disable Monitoring. Toast notifications confirm success or show partial failures.
Auto-Clean & Clean Mode#
Auto-Clean automatically moderates incoming comments based on your rules and whitelist. Enable or disable it individually per page or in bulk via the floating action bar.
Clean Mode determines what happens to flagged comments:
You can set a Whitelist of comma-separated words in the page drawer β comments containing whitelisted words are never auto-moderated. Bulk toggle Auto-Clean and switch Clean Mode via the floating action bar.
π±Comment seeding#
What seeding is#
Seeding posts comments on your own posts on behalf of your fan pages, following a scenario you write in advance. People don't linger under an ad post with no discussion; a few live comments and replies give social proof and lift engagement.
A seeding task has four parts: author pages, target posts, a scenario of steps and pacing parameters. Once started, Soniurl publishes the comments itself, spread out over time, and shows the status of each one in the dashboard.
The section lives in the top menu under "Seeding". On mobile it is in the "More" menu. Available on the Pro plan and higher and on custom plans.
What you need to start#
Check four things before the first task:
Creating a task step by step#
Click "New task" in the dashboard. The builder has four sections on the left and a "Summary" panel on the right.
Scenario: steps, texts, spintax, images#
A step is one comment under each post. Root steps are published as standalone comments; reply steps are nested under their parent. The parent is always published before the child, and the next step waits its own spread after the previous one is published.
A typical chain: a question from one page, an answer from another, thanks from a third. The discussion looks alive rather than like a row of identical remarks.
Text pool: every line in the step field is a separate variant. Each post takes the next text in turn, so neighbouring posts get different comments. The more variants, the fewer repeats.
Spintax is switched on with the toggle on the step and adds variety inside one line: a group in curly braces with variants separated by a vertical bar expands into one of them. Groups can be nested. The text is chosen and fixed when the comment is queued.
{Hi|Hello|Good afternoon}! {Ordered|Got} it {yesterday|last week} β {happy with it|works great}.Images: drag a file onto the step card or paste from the clipboard. One image goes with one comment; the step cycles through its set in turn. Up to 20 images per step, up to 8 MB each, images only.
The «¢ Bulk» panel builds the scenario from a single paste. Blocks are separated by a blank line: a block without a marker is a comment, a block starting with «>» is a reply to the previous comment, «>>» is a reply to that reply. Lines inside a block stay the text pool of their step.
Great product, bought it in March
Taking it a second time
> Where did you order it?
> Is delivery slow?
>> From the official store, arrived in 3 days
Fair price for this qualityA batch with markers is appended to the scenario and never overwrites steps you already built β the single exception is the one empty step of a fresh task, which is replaced. A batch without markers behaves as before: blocks fill existing steps in order and extras create new ones. The panel shows the resulting tree and the step counts before you apply it.
Limits: up to 20 steps per scenario, up to 200 texts per step, up to 5000 characters per text.
Scenario presets#
A finished scenario can be saved and applied to new tasks so you don't rebuild the steps every time.
In a copy for a teammate the step authors are reset, because everyone has their own pages: after applying it, pick an author in every step; the builder highlights where it is needed.
AI assistant#
The assistant writes a scenario for a specific post and generates photos for steps. It runs on your Replicate key: charges go to your Replicate account, the platform takes nothing for generations.
The model can be changed for every generation; the price is shown next to the button. Limits are 20 generations per minute and 300 per day.
Dashboard: statuses and control#
The dashboard shows the task list with status filters on the left and the selected task on the right. Statuses:
Tiles above the table: "posted", "errors", "skipped", "queued" and "remaining" with a time estimate. The progress bar shows the same shares.
The table lists every comment as a row: the post with a Facebook link, step and chain, author, text, status with a reason, and time. The "Errors", "Queued", "Posted" and "Skipped" filters help find problem rows quickly. Actions in the task header:
Yellow banners above the table explain what is going on: "Facebook asked to wait" means the page is paused for a few minutes and the task continues by itself; "Page token expired" asks you to reconnect the page in "Pages" or replace it; "Many errors" suggests checking whether the posts are open for comments.
Safety and limits#
Seeding is built to keep pages safe. What protects them automatically:
Frequently asked questions#
Posts don't load or the list is empty
Most often the page token expired: the profile lost its admin or editor role. Reconnect the page in the "Pages" section and refresh the list. If ad posts didn't load, the builder shows a separate banner: the page needs advertising access.
A comment with the status "No permission or the post is closed for comments"
Facebook didn't let the page under this post: comments are disabled on it, or the page lacks the required permissions. Open the post on Facebook and check the commenting settings.
Only 500 posts are shown in the list
That is the cap per source so the list opens quickly. Add older posts on the "Paste ID list" tab by id or link.
Can I comment on other people's posts
No, seeding only works under posts on your own pages. The builder highlights foreign ids and links as errors and blocks the start.
A task can't be deleted
If some of the task's comments are being published right now, deletion is declined with a request to wait about 30 seconds. Click "Pause", wait for it to finish and try again.
A comment was published twice
A rare case: if publishing was interrupted between Facebook's response and saving the result, the comment may repeat after a restart. The extra one can be hidden or deleted in the "Comments" section.
π¨Creatives#
Creative Analytics#
The Creatives section lets you analyze performance at the creative (ad image/video) level. Each creative is aggregated across all ads and campaigns that use it, so you can see which visuals perform best.
Each row shows the creative thumbnail with a type badge (IMG/VID), title, body text, and usage count (how many ads and campaigns use it). Hover over a thumbnail to see a full-size preview.
Six summary cards at the top display totals: Creatives count (with image/video breakdown), Total Spend, Impressions, Avg CTR, Avg CPC, and Avg CPA.
Metrics#
Each creative displays the following metrics, aggregated across all ads using it:
Metrics are color-coded with a heatmap: green means above average (for CTR) or below average (for CPC/CPM/CPA), red means the opposite. A Totals row at the bottom shows aggregated values.
How creatives are grouped into rows#
One row is one creative, not one ad. Grouping is based on the file itself: when the same image or the same video runs across different ads, adsets and campaigns, they collapse into a single row and the metrics add up. Ad names do not affect grouping.
How a creative is identified, in order:
Merging and splitting manually#
You can adjust the automatic grouping. Every action is reversible and visible only to you.
If you would rather not merge but still want to see variations together, use tags. Put one tag on every variation and filter by it: the rows stay separate while the Total row at the bottom shows their combined figures.
Downloading the creative file#
Hover a thumbnail in the table β a download icon appears in its top-left corner. Clicking it downloads the file itself: the video for a video creative, the image for a static one. On tablets the icon is always visible.
The file name comes from the ad name. In a split group each row downloads its own ad's file rather than the group's sample.
Old and archived creatives#
The table shows whatever had statistics in the selected period. If an ad did not run in that window there will be no row, even though it still sits in the ad account. Widen the date range and the creative comes back.
The regular sync pulls active and paused ads. Facebook does not return Archived and Deleted campaigns by default, so there is a separate Archived button on the Ad accounts page: pick the accounts, set the period, and archived campaigns are pulled together with their statistics β their creatives then appear here like any other.
Filters & Search#
Use date presets (Today, 7D, 14D, 30D, 90D) or set a custom date range. All connected ad accounts are included by default.
The search box filters creatives by title and body text in real time.
β‘Rules and automation#
Creating a rule#
A rule is an automatic watcher. It monitors a chosen metric (for example, Β«SpendΒ» or Β«CPRΒ») at the level you pick β Β«CampaignΒ», Β«Ad SetΒ» or Β«AdΒ» β and when the condition is met, it performs an action on its own: it pauses the object, changes the budget or sends a Telegram notification. This way you don't have to watch your accounts around the clock by hand.
Below is a step-by-step guide to creating ONE rule in the Β«Create New RuleΒ» window. To apply rules to many accounts at once, use Β«Rule GroupsΒ» (see below).
Conditions#
A condition defines WHEN the rule fires. The primary condition has four parts:
When assembled, the rule reads like a sentence: Β«IF Metric Operator Threshold over the last Window β THEN ActionΒ». On the rule card, that same Β«Time WindowΒ» is labeled in words as Β«over the last β¦Β».
The Β«MetricΒ» dropdown holds dozens of indicators. The main groups:
Available: Β«TodayΒ», Β«YesterdayΒ», Β«Last 3 DaysΒ», Β«Last 7 DaysΒ», Β«Last 14 DaysΒ», Β«Last 30 DaysΒ». Maximum β 30 days.
The period is calculated in the ad account's time zone, so Β«TodayΒ» matches what you see in Ads Manager.
Besides the primary condition, you can add Β«Additional ConditionsΒ» with the Β«+ Add conditionΒ» button. Multiple conditions are combined with logic:
You can compare not only against a number but against an expression too: switch the field into expression mode and type a formula, for example Β«(leads + 1) * 40Β».
Actions#
An action is what the rule does when the condition is met. The Β«Action TypeΒ» field offers:
Bid actions (Β«Increase BidΒ» / Β«Decrease BidΒ» / Β«Set BidΒ») are available only at the Β«Ad SetΒ» level and only for manual-bid strategies (bid cap / cost cap). On other strategies they are silently skipped.
Settings and safeguards#
The Β«SettingsΒ» block protects against false and overly frequent triggers. The key parameters:
Ready-made recipes#
Common rules with exact field names β you'll assemble each in a minute. Tune the thresholds to your own campaigns.
Entity Level: Campaign Β· Metric: Spend Β· Operator: greater than Β· Threshold: 50 Β· Time Window: Today Β· Action: Pause campaign. Safeguard: set Β«Minimum eventsΒ» so it won't cut at the start.
Metric: CPR Β· greater than Β· Threshold: 30 Β· Window: Last 3 Days Β· Action: Send Telegram notification. Be sure to add the extra condition Β«Spend greater or equal 30Β» (see the warning below).
Metric: CTR Β· less than Β· Threshold: 0.5 Β· Window: Last 3 Days Β· Action: Pause campaign. Extra condition Β«Impressions greater or equal 1000Β» β so the data is meaningful.
Metric: Spend Β· greater than Β· Threshold: 100 Β· Window: Today Β· Action: Send Telegram notification. The first Β«safeΒ» rule before auto-pausing.
Metric: Frequency Β· greater than Β· Threshold: 3 Β· Window: Last 7 Days Β· Action: Pause campaign. Stops audience burnout.
Metric: Results Β· less or equal Β· Threshold: 0 Β· extra condition Β«Spend greater or equal 20Β» Β· Window: Last 3 Days Β· Action: Pause campaign.
Metric: Tracker: ROI Β· greater or equal Β· Threshold: 2 Β· Action: Adjust budget, Β«Budget Change (%)Β» = 20, Β«Max Budget Ceiling ($/day)Β» = 500. Required: a Β«CooldownΒ» of 6β12 h.
Metric: CPL Β· less than Β· Threshold: 10 Β· extra condition Β«Leads greater or equal 5Β» Β· Window: Last 7 Days Β· Action: Adjust budget +20%, ceiling $500. Same cooldown safeguard as above.
Templates#
A template is a ready-made rule preset for a typical scenario. On the rules page, open the Β«TemplatesΒ» tab and apply the one you need. Built-in templates:
You can also save your own rule as a template, to reuse it and apply it to other accounts.
Voice input#
You can describe a rule in plain words, and Soniurl will assemble it for you.
Preview#
Before saving, click Β«PreviewΒ» β it shows which objects the rule will affect RIGHT NOW.
The list shows the campaigns/ad sets/ads that match the conditions, with their current metric values. If the list is empty or too large β adjust the threshold or the window.
Running paused and observing#
To avoid risk, create the rule with the Β«Create pausedΒ» button. It will exist but change nothing β handy for watching how it behaves.
After turning it on, keep an eye on the Β«ActivityΒ» tab: every trigger is shown there. You can pause the rule at any time.
Rule Groups β one set of rules for all accounts#
If you have several ad accounts with the same rules in each, you don't need to create them one by one. Create a rule group once, select all the accounts you need β and Soniurl will create identical rules in each of them. When you change something in the group, the changes roll out to all accounts at once.
Activity log and troubleshooting#
Every check and every action of a rule is recorded. The Β«ActivityΒ» tab is a detailed history: what happened, when, and why.
If a rule Β«didn't fireΒ», check Β«ActivityΒ» β the reason is usually one of these:
π¦Bundles#
What is a Bundle#
A bundle is a set of automatic rules that manage all the campaigns of a single funnel based on their performance. Once a minute the bundle collects metrics, compares them against your limits and hard stops, and makes decisions: stop unprofitable entities, increase the budget of profitable ones, restart stopped ones, or send an alert.
A bundle manages only active entities in the owner's selected ad accounts. Only bundles with the "active" status are evaluated. New bundles are created in Dry Run mode (simulation) by default β no real actions are taken until you turn it off.
Setting Up a Bundle: Step by Step#
Funnel ID β How the Bundle Finds Campaigns#
A bundle is tied to a funnel through the Funnel ID tag in the campaign name.
A campaign is included in a bundle if its Funnel ID is exactly equal to the bundle's ID OR starts with "bundle ID + underscore" (prefix match for templates with FB macros). Example: bundle 555 will catch 555 and 555_anything, but NOT 5552; bundle 555_SUB4 will catch 555_SUB4_babka1, but not 555_SUB4X.
Matching is limited to the bundle owner's selected ad accounts (and, if specified, a particular list of accounts). Campaigns without an ||ID tag are never included in the funnel. The interface shows a counter of matched campaigns β verify that the tag works.
Where the Data Comes From#
The conversion source (Data Source) determines where the bundle pulls installs, registrations, leads, and deposits from:
The click source (Click Source) β which clicks to use for CPC: 5 options β fb_clicks (default), fb_link_clicks (link clicks), fb_unique_clicks (FB unique clicks), tracker (tracker clicks), tracker_unique (tracker unique clicks).
Click Source is used not only for the CPC calculation, but also for the "click" stage and the "spend without clicks" hard stop.
Funnel Stage Cascade#
The bundle determines which funnel stage each entity is in (by the number of events) and applies that stage's primary KPI. The stage is chosen by priority β from the deepest to the shallowest; an entity is always in exactly one stage.
As the funnel deepens, the upper metrics (CPC, CPI, CPL) stop halting entities and turn into guardrailsGuardrail is a metric in alert-only mode. It notifies you when exceeded but does NOT stop campaigns. Upper funnel metrics (CPC, CPI) become guardrails automatically when deeper conversions (leads, deposits) start arriving. Threshold = limit Γ multiplier. β notifications only, no stopping.
Limits (7)#
Limits define the maximum acceptable cost. Five are tied to the funnel stage; two (Strict CPC and CPM) are ceilings that apply at any stage.
Hard Stops (Emergency Brakes)#
Hard stops are checked BEFORE the stage limits: they trigger when an entity spends money but gets no events. Only ONE hard stop fires per entity per cycle β the first one in order: no clicks β no installs β no registrations β no leads β no deposits. If a hard stop fires, the stage limits are not evaluated in that cycle.
Additionally, in the same block, the Strict Max CPC and Max CPM ceilings (see "Limits") work as "always-stops" β they stop on CPC/CPM at any stage.
Scaling (Budget Scaling)#
Scaling automatically INCREASES an entity's daily budget as conversions come in (only up, never down). By default the ad set's budget is changed (or the campaign's β for CBO and when action_target=campaign).
Works only if the Scaling Enabled toggle is on (off by default).
For each event type (installs, leads, deposits) its own contribution is computed, and they are SUMMED into a single target budget. "First" is a one-time amount for the first event of the type, "Extra" is added for each subsequent one. This is the final target budget, not an increment; the bundle will set it only if it is higher than the current one.
1 lead β target budget $10
2 leads β $10 + (2β1)Γ$5 = $15
3 leads β $10 + (3β1)Γ$5 = $20
Safety Settings#
Minimum-data thresholds prevent evaluating a limit until there is enough data. Important: the gates only skip the evaluation of the corresponding limit, but they do NOT skip hard stops.
Auto-Restart and Budget Reset#
Auto-restart (OFF by default) restarts stopped entities once a day. It fires only if the auto_restart_daily toggle is on AND a "Restart Time" is set β without both conditions nothing happens.
A restart returns the entity to the active status, clears the stop reason, and is applied to ad sets (or campaigns β per action_target).
Daily budget reset: once a day at the set time, the daily budget is reset to a fixed value that you specify (not to the "initial" one). You need to set both the time and the value.
Statuses, States, and Logs#
Bundle statuses: draft β active (evaluated and acting) β paused; archived (terminal). Only bundles with the active status are evaluated.
paused_reason β the reason for an AUTO-pause by the system (currently: token_expired when a Facebook token fails). This is not the same as a manual pause; it is cleared on manual resume.
For each entity the bundle stores: status (active / stopped_by_bundle / stopped_manually), the stop reason, budgets (current, base, and the one set by the bundle), the number of restarts for the day, and the time of the last action. The bundle self-heals: if an entity it stopped is turned on manually in FB β it resets its own state and re-evaluates it; if an entity is deleted or paused in FB β it marks it so as not to poke it or spam.
Every decision is written to the log: the action type (stop, restart, scale_budget, reset_budget, hard_stop_funnel, skip, alert), the reason (e.g., "CPC $12.5 > limit $8.0 (stage=click)"), a metrics snapshot (spend, clicks, impressions, CPM, installs, registrations, leads, deposits), success/error, and the dry_run flag.
Telegram Notifications#
Notifications arrive on any successfully performed action (stop, restart, scaling, budget reset, funnel stop) or when a guardrail alert fires. They do NOT arrive in Dry Run mode and do NOT arrive on a failed action (an error on the FB side). By default the action is applied to the ad set. The Telegram toggle for a bundle is in its settings.
Tips from Practitioners#
πTracker Integration#
Overview#
Soniurl integrates with tracking platforms (Keitaro, tds.ceo, Binom v1, Binom v2, RedTrack, AIO, ClickFlare) for bidirectional data sync between Facebook Ads and your tracker.
The integration includes three core features:
Connecting a Tracker#
To connect a tracker, go to Settings β Tracker.
Supported trackers:
Entity Mapping#
Soniurl links Facebook ad entities (campaigns, adsets, ads) to tracker campaigns via URL parameters. Configure the following:
Sending Costs#
Costs can be sent manually or automatically.
For each entity (ad/adset/campaign), Soniurl calculates the spend from Facebook Insights and sends it to the tracker via the update_costs API.
Pulling Stats from Tracker#
Stats pulling fetches click, conversion, revenue, and profit data from your tracker and stores it in Soniurl. Data is displayed alongside Facebook metrics.
Available tracker metrics:
Automatic Sync#
Soniurl can automatically send costs and pull stats on a schedule.
Both features are managed via Settings β Tracker. Each auto-refresh cycle checks if the configured interval has passed since the last send/pull.
Tracker Metrics in Statistics#
After pulling, tracker data appears in Statistics alongside Facebook metrics. Columns prefixed with "t_" are tracker data: t_clicks, t_conversions, t_revenue, t_profit, t_roi, t_cr, t_epc, t_leads, t_sales.
Tracker metrics are available at all levels: campaigns, ad sets, ads. Data auto-aggregates when navigating between levels (if send_level=ad, metrics roll up to campaign level).
Automation Rules with Tracker Data#
You can use tracker metrics as conditions in automation rules. E.g., "If t_roi < 50%, pause the ad" or "If t_conversions > 10, increase budget by 20%".
Available rule metrics: t_clicks, t_unique_clicks, t_conversions, t_revenue, t_profit, t_roi, t_cr, t_epc, t_leads, t_sales. Can be combined with Facebook metrics using AND/OR logic.
Limitations#
Current integration limitations:
Google Sheets Export#
Soniurl automatically exports Facebook ad statistics to Google Sheets. Each export creates 4 sheets: Info (summary), Campaigns, Ad Sets, and Ads.
The integration uses a Google Service Account β just share your spreadsheet with the provided email. If a tracker (Keitaro/Binom) is connected, its metrics are automatically included.
Created sheets:
Exported Facebook columns:
Tracker columns (if connected):
βοΈSettings#
Account#
Manage your personal account settings:
Active Sessions:
Plan & Billing#
View your current plan, usage, and manage your subscription.
Usage bars show how much of your limits you're using:
Features included in your current plan:
Active add-ons are displayed with their quantity and monthly price. Payment history shows all transactions with date, plan, period, amount, type, and status (color-coded: green = paid, amber = pending, red = failed).
Tracker Integration#
Connect Soniurl to your tracking platform to automatically send cost data from Facebook Ads.
Configure additional settings:
Telegram Notifications#
Receive instant Telegram notifications when rules trigger actions or new comments appear.
Once connected, the following options are available:
API Keys#
API keys let you access Soniurl data programmatically β for custom dashboards, automation, or third-party integrations. Base URL: https://ads.soniurl.com/api/v1/
Access Scopes:
Available Endpoints:
Entity endpoints are nested under the ad account: use the provider ID with the act_ prefix, exactly as returned by /ad-accounts. Date range is passed as from / to in YYYY-MM-DD.
Daily Request Limits:
All requests require the Authorization: Bearer mfk_... header. Responses are JSON. Rate limit exceeded returns 429. Limits reset at midnight UTC.
Team#
Create a team to share your plan with colleagues. Team members work under the owner's subscription and limits.
As the team owner, you can:
As a team member, you can:
Referral Program#
Earn credits by referring new users to Soniurl. Share your referral link, and when someone signs up and subscribes, you both get credits.
Your referral link is shown with a Copy button. Click the Edit button to customize your referral code (3-32 characters, letters and numbers only).
Four stats cards show your referral performance:
The Referrals table lists each referred user (masked name) with their date, status (Active/Expired/Disabled), and amount earned. Transaction History shows all credit movements with descriptions and amounts.
β¨Bulk Actions#
Selecting Items#
Bulk actions let you manage multiple campaigns, ad sets, or ads at once. Start by selecting the items you want to modify.
Pause / Activate#
Quickly pause or activate multiple entities at once.
Budget & Bids#
Change budgets or bids for multiple entities at once. Three modes available:
Rename#
Rename multiple entities using find-and-replace or templates. Useful for standardizing naming conventions across campaigns.
You can use variables like {name}, {index}, and {id} in the rename template.
Duplicate#
Create copies of selected campaigns, ad sets, or ads.
Delete#
Permanently delete selected entities from Facebook. This removes them from both Soniurl and Facebook.
πPricing & Plans#
Plan Comparison#
Soniurl offers five plans:
Billing Periods#
Choose between four billing periods: Month, Quarter (5% off), Half-Year (10% off), or Year (15% off). Longer periods mean a lower per-month price.
Your subscription auto-renews at the end of each period. You can upgrade to a higher plan at any time β the difference is prorated for the remaining days.
Promo Codes#
Enter a promo code on the Pricing page to get a discount. Promo codes can offer a percentage discount or a fixed dollar amount off.
Some promo codes may be restricted to specific plans or billing periods. The code is validated when you click Apply.
Credits#
Credits are earned through the referral program (10% commission from each referred user's payments). Your credit balance is shown at the top of the Pricing page.
Credits are applied during checkout β they reduce the amount you need to pay. If your credit balance covers the full amount, no payment is required.
Add-ons#
If you need more capacity beyond your plan limits, you can purchase add-ons. Available only on paid plans with an active subscription:
Payment#
All payments are processed via cryptocurrency (Cryptomus). After confirming your order, you'll be redirected to an invoice page where you can pay with any supported cryptocurrency.
The invoice is valid for 1 hour. After payment, the system automatically detects the transaction and activates your plan.
π¬Comments#
Comments Feed#
The Comments section shows a real-time feed of comments from your Facebook pages. New comments arrive instantly via WebSocket β no page reload needed.
Six stats cards at the top show: Total, Visible, Hidden, Deleted, Replied, and Today's comments. Stats update automatically after each action.
Comments are loaded via infinite scroll (50 per batch). Threaded replies appear indented under their parent comment with a visible reply count badge.
Page Selection#
Choose which page's comments to view using the dropdown at the top:
The dropdown shows each page with its picture, name, page ID, subscription status (green dot), and auto-clean badge. Use the search box to quickly find a page.
Filters & Search#
Filter comments using the controls above the feed:
Filters can be combined. Changing any filter resets the current selection.
Replies & Threading#
Comments display with full threading. Parent comments appear at the top level, replies are indented below with a left border and reply count badge.
Hide & Delete#
Manage unwanted comments directly from the feed:
Bulk Actions#
Manage multiple comments at once:
Translation#
Translate comments into 12 supported languages: English, Russian, Ukrainian, German, French, Spanish, Portuguese, Chinese, Japanese, Arabic, Turkish, Polish.
Two ways to translate:
Translations appear inline below the original text with a blue border. The source language is auto-detected.
Notifications#
Stay updated about new comments with two notification channels:
The bell icon turns green when desktop notifications are active, gray when disabled. Browser notification permission is requested once on first enable.