Changelog
CallScaler Product Changelog and Release Notes
What's New
The latest updates and improvements to CallScaler.
August 6, 2026
Custom publisher payout terms
newPay Per Call networks can now set their own payout schedule for publishers. Settings → Pay Per Call → Payout Preferences offers Standard terms or Custom, how long earnings are held before becoming available, and how long publishers wait between payout requests. Publisher earnings pages and payout requests follow your terms automatically, and the "Pays weekly / bi-weekly / monthly" badge on marketplace listings now reflects each network's actual terms instead of a fixed label.
Offer editor: custom verticals and internal names for your publishers
newThe offer editor got smarter about how offers are labeled and categorized:
- •Custom verticals: Type your own vertical name when creating or editing an offer — it's saved as a new vertical visible only within your network, and your buyers' and brokers' campaign pickers include it automatically.
- •Internal offer names: Invite-only and private offers now show their internal name to your network's publishers everywhere in the app, instead of the public marketplace listing title.
- •One vertical field: The marketplace subcategory picker now lives in the Distribution section and only appears for offers actually listed on the marketplace.
- •New verticals: Wildlife Removal and Auto Body are now available for offers and campaigns.
Payment pages on white-label domains
newPaying from a network's own branded domain no longer strands you on a login screen:
- •Buyer & broker deposits: After completing a deposit, the confirmation page now loads and shows your updated balance. Previously the redirect bounced to the login page — the deposit was still credited automatically within a few minutes, but it looked like the payment failed, and some payers paid twice.
- •Account top-ups, cards & subscription payments: Adding funds, saving a card, or paying a subscription from a branded domain now returns you to that same domain when the payment finishes, instead of the main platform's login page.
Negative-balance notices show the live amount owed
newThe negative-balance notice on the billing page, and its email reminders, now always shows your current outstanding amount. Previously it froze at the amount from the moment your balance first went negative, so it could badly understate what was owed.
Delete Pay Per Call offers through the API
newOffers can now be deleted via the API (DELETE /api/v1/ppc/campaigns/{id}), including drafts created through the legacy campaigns endpoint that never appeared in the Offers tab. Deleted offers also no longer linger in API list responses.
August 4, 2026
Buyer campaign verticals now come from your offers
newWhen you, your buyers, or your brokers create a buyer campaign, the vertical picker now only offers verticals your network actually has an offer for, no more campaigns pointed at a vertical with no matching supply. Each offer now carries a "Buyer campaign vertical" setting in the offer editor, auto-suggested from its marketplace category, and existing campaigns keep their current vertical even if no offer matches it yet.
Broker accounts for Pay Per Call networks
newPay Per Call networks can now bring on brokers, trusted partners who bring their own buyers into your network and manage them for you. Turn on "Enable broker accounts" under Settings → Pay Per Call → Global Settings and a Brokers tab appears on your Pay Per Call dashboard, where you invite brokers and track what their buyers owe you. Each broker gets their own portal login to create buyers and set up their campaigns and bids, seeing only their own buyers' calls, never the rest of your network. Charges for a broker's buyers accrue on the broker's own balance, which they fund with deposits, a saved card, or auto top-up, or run on invoice billing and settle with you directly. The first settings tab is now called Global Settings, holding your network profile alongside network-wide options like this one.
A more informative Buyers list
newThe Buyers tab in Pay Per Call now shows much more at a glance: each buyer's email (with one-click copy) under their name, how they're billed (prepaid or invoice), what they've spent in the last four weeks, and a per-buyer breakdown of campaign health, live, paused, needs balance, outside hours, or cap reached, as compact chips with explanations on hover. Columns are sortable and you can filter by billing mode or campaign status. The Publishers tab also now says "publisher" everywhere it used to say "affiliate."
Publisher campaign pages open instantly, organized into tabs
newThe publisher campaign detail page is now split into two tabs, Campaign details and Ping activity, matching the buyer campaign page, and it opens instantly even for publishers sending hundreds of thousands of pings: the ping totals and activity chart that previously took noticeable time to compute now load in milliseconds, and lifetime totals stay accurate no matter how much old ping history has been trimmed.
Publisher payout corrections
new- •Payout adjustments now reach the publisher's view: unqualifying a call, editing its payout, granting a retroactive payout, or approving a buyer dispute updates the publisher's own copy of that call too — previously the publisher's dashboard could keep showing the old amount even though the actual ledger was correct. Existing mismatched calls have been corrected.
- •Missed payouts on some auction wins: calls from publishers on a standard campaign assignment that were sold through the network's live auction billed the buyer but skipped the publisher's payout. These calls now attribute and pay the publisher correctly (including their minimum-duration rules), and the affected publishers have been credited.
Ping activity on buyer campaigns, with full request/response detail
newBuyer campaign pages in Pay Per Call are now split into two tabs: your campaign setup on the first, and a new Ping activity tab showing every ping sent to that buyer, how many times the campaign was pinged, how many bids it returned, and how many calls it won, with an activity chart and a log of recent pings. Click any ping, on either the buyer campaign page or the publisher campaign page, to see the complete exchange: the exact request that was sent, the response that came back (including the buyer's error message when an endpoint rejects), and the accept confirmation for two-step buyers. Full payloads are kept for 48 hours on publisher pings and 7 days on buyer pings, winners keep theirs much longer, so recent integration issues can be diagnosed without the log growing forever. The same click-through detail is also available from any call's Ping Details tab in the call log.
August 3, 2026
Publisher applications: instant loading and reversible decisions
newThe Applications tab in Pay Per Call loaded slowly for networks with a long application history, it now opens instantly regardless of how many applications you've reviewed. Decisions are also no longer final: the row menu on a rejected application offers Approve instead (with the full number and call-flow picker) or Quick Approve, an approved application can be rejected (its tracking number is released and the publisher's ping integration is shut off, while their earnings history is kept), and either can be moved back to pending for a fresh review. Approval and rejection dialogs now include an "Email the publisher" checkbox, so you can correct a status quietly or re-send the publisher their integration details, your choice.
Network revenue could be counted twice for internally billed buyers
newWhen a buyer billed through CallScaler also reported the same calls back via webhook, dashboards counted that revenue twice, inflating gross and margin on the Dashboard, Pay Per Call Overview, and Top Buyers views. Each call's revenue is now counted once no matter how many paths report it, and historical numbers are corrected automatically.
Buyer ping endpoints that expect fields inside a parent object
newSome buyer endpoints require every field to sit inside a wrapper rather than at the top level of the request, and there was no way to say so in the ping/post destination editor, a field named ping.zip_code was sent under that literal name and the buyer replied with a parse error. A dot in a field name now builds the nesting the endpoint expects, so ping.zip_code arrives as zip_code inside a ping wrapper. The Test button also shows the exact request CallScaler sends, so a mis-shaped setup is visible immediately instead of surfacing as the buyer's error later. Form-encoded destinations are unchanged, and a field name that genuinely contains a dot can be escaped with a backslash.
Publisher ping endpoints rejecting valid pings
newSome publisher bidding platforms send a correctly formatted ping that doesn't label its payload the way we expected, and CallScaler answered every one of them with "caller is required" even though the caller and ZIP were right there in the request. Pings are now read by their actual content rather than by that label, so these integrations work without the publisher changing anything on their side. Pings that put the caller and ZIP in the endpoint URL, wrap them in an outer envelope, or name them ani, from_number or caller_zip are now understood too, and rejected pings show up in the ping log so a misconfigured integration is visible instead of silent.
False "No forward phone set" warning on RTB buyer campaigns
newThe RTB step's buyer list warned "No forward phone set" for any campaign whose buyer had no forward number saved, even when the campaign never needed one. Ping/post campaigns receive their transfer number from the buyer's endpoint on every call, and call-flow campaigns route to the buyer's own flow, so the warning was a false alarm there. It now appears only for phone-destination campaigns that truly have no number configured anywhere (buyer-level, campaign-level, or per-ZIP).
July 30, 2026
Ping/post calls qualify on the buyer's own terms
newMany ping/post endpoints state right in their bid how long a call must last before they pay, one bid may pay on 90-second calls, the next on 130. Ping/post campaigns can now qualify calls at exactly the duration each winning bid states (the default for new ping/post campaigns), so the buyer is billed precisely when their endpoint pays them instead of at one fixed minimum for every call. Bids that don't state a duration fall back to the campaign's fixed minimum, and you can still pin a fixed duration for every call if you prefer. The campaign editor also got tidier: pricing and qualification now live in a single card, with the minimum AI quality score and daily call cap each behind a simple checkbox with a plain-language explainer.
Simpler pricing for ping/post buyer campaigns
newPing/post campaigns no longer ask you to reason about revenue-share percentages. The Pricing card now offers exactly what these deals are in practice: The winning bid (the default, every qualified call is billed at the bid the endpoint returns, nothing to configure) or Flat price per call (the ping only decides whether the buyer can take the call). If your arrangement really is a percentage of the endpoint's reported payout, an optional "keep a margin" setting lives under Advanced, and pointing a campaign at a ping/post endpoint now defaults it to bid-based pricing automatically. Billing at the full winning bid no longer requires a subscription on the buyer or the network; only keeping a margin does. Call-flow revenue share is unchanged.
Pay Per Call margin on the dashboard
newThe Today chart on your dashboard has a new Pay Per Call margin metric for Pay Per Call accounts, what buyers paid minus what publishers earned, hour by hour, with 7-day and 30-day totals in the performance row. It's the same margin number as the Pay Per Call Overview, now watchable through the day right on the home dashboard.
Create several buyer campaigns at once
newSetting a buyer up across many verticals no longer means creating campaigns one dialog at a time. New campaign on a buyer now asks whether you want one or several: the multi option gives you a row per campaign (name + vertical), creates them all with live progress, and lets you retry any that fail. Verticals are picked from a searchable list in both paths, so campaigns join their vertical group for auctions correctly instead of relying on free-typed labels.
Ping/post and billing fixes
fixed- •Buyer responses in more formats: Buyer APIs that wrap their reply in an envelope (like data: {...}) or spell fields differently (trackingNumber vs tracking_number) are now parsed correctly — previously a successful ping and accept could still be scored as "did not accept", and a valid bid could read as $0 and lose the auction. Phone numbers in formats like "(906) 208-7982" now dial correctly, and buyer declines show the actual reason instead of coming back blank.
- •Short calls billed in full: In rare cases a winning call could lose track of which campaign it belonged to, skipping the campaign's minimum-duration and quality gates and billing a too-short call at full price. The campaign is now resolved reliably and the gates always apply.
July 29, 2026
Assign campaigns to a publisher in bulk
newSetting a publisher up across your whole catalog no longer means repeating the same dialog a dozen times. Assign Campaign now asks whether you want one campaign or several, and the multi-campaign option lets you tick every offer you want, set one payout arrangement and one area code for the batch, and start. CallScaler buys a number per offer one at a time and shows live per-offer progress, so you can stop after the current one or retry just the offers that failed (with a different area code if the first one ran out of numbers). The single-campaign dialog now leads with buying a new number and suggests well-stocked area codes you can pick with one click.
Revenue share now supports paying the full winning bid
newRevenue-share pricing accepts 100%, so a buyer can be charged exactly the winning bid their own endpoint returns, the right setting when an endpoint quotes the net price it pays you and your margin comes from the publisher payout side instead. Set a ping/post campaign below 100% and CallScaler now explains when a lower share actually applies, so margin isn't taken twice by accident. Revenue share is also available to buyers set up under a network whose owner has an active subscription, instead of requiring a subscription on the buyer's own login.
Two-step ping/post (ping, then accept)
newCallScaler now supports buyer APIs that split the transaction in two, the ping returns a bid plus a request id, and a second "accept" request echoing that id returns the routable phone number (TrackDrive-style posting instructions and similar ping trees). Check "Two-step ping/post" in a bidder's Advanced settings (or a campaign's Request format & fields), paste the accept URL, and CallScaler handles the rest: the request id is detected automatically, accept-only fields like ping_id are held back from the ping and sent on the accept, the accept fires only for the winning bid (losing bids are never committed), and if a winner's accept fails the call falls to the next-best bidder automatically. The test button runs both requests and shows both responses. Available on RTB auction bidders, buyer campaign Ping/Post destinations, and buyer signup.
Autofill from specs is more accurate
newPasting a buyer's API documentation into "Autofill from specs" now produces the right config more reliably: the same spec always yields the same result, two-step (ping/accept) instructions fill the accept URL and request-id field automatically, GET-style query-string APIs are configured correctly, Ringba RTB specs come out with the exact field names and caller-ID settings working integrations use, and specs whose responses only contain a SIP address are flagged clearly (a phone number is required for routing).
Ping/post endpoint handling
new- •Rejections with an ID field: A buyer rejection that happened to include an id field could be misread as an accepted bid. Rejections are now recognized correctly regardless of extra fields.
- •Phone numbers in web addresses: Using {caller} or other placeholders inside an endpoint URL now encodes the value properly, so callers' numbers arrive intact instead of garbled.
- •Clearer no-bid reasons: Bidders that return a SIP-only destination or a dynamic bid field are parsed correctly, with an explicit reason shown when a bid can't be routed.
Instant confirmation when buyers save a card or deposit
newOn networks that bill buyers through their alternate payment processor, saving a card or making a deposit could look like it silently failed, the checkout completed, but the billing page didn't reflect it for up to 10 minutes, leading buyers to retry a save that had already worked. The checkout now opens in its own tab while the billing page watches for the result and confirms on screen within seconds: the saved card appears immediately (ready for auto top-up), and deposits credit your balance with a confirmation the moment the payment lands.
July 28, 2026
Filter your call log by location
newThe call log has a new Location filter, type a city, state, or ZIP code to see calls from that area. It matches both the caller's phone number area and the caller's actual ZIP when one was collected during the call, so pay-per-call traffic filters by where the caller really is. Location filters apply to CSV exports too.
Switch a campaign between Static and RTB
newPay Per Call networks can now change a publisher campaign's type after setup. Open the campaign, hit Edit on Campaign settings, and pick Static or RTB, no need to delete and re-create the campaign. Switching to RTB requires the campaign's call flow to have an RTB auction step.
Instant ping stats on publisher and campaign pages
newPublisher profiles, campaign cards, and the ping activity chart now load instantly even for very high-volume ping integrations (previously they could take seconds or fail to load). Ping and bid counts are tracked continuously instead of recalculated from recent activity, so totals are true lifetime numbers and 30-day counts no longer under-count busy campaigns.
Faster responses on repeat ping requests
improvedWhen a ping integration asks about an area we recently had no buyer for, we now answer immediately instead of re-running the full buyer auction. High-volume dialers get near-instant responses on repeat no-bid requests.
Pay Per Call menu matches the page layout
newThe Pay Per Call sidebar section now lists its pages in the same order as the tabs on the page itself, starting with Overview, and includes a quick link to Pay Per Call Settings at the bottom.
Publisher earnings on direct calls to campaign numbers
newCalls that came in directly on a publisher's campaign number (rather than through their ping integration) could pay the publisher $0 when the payout was configured at the offer level. Direct calls now honor the offer's payout exactly like pinged calls, and they're correctly attributed to the publisher in call views. Affected publishers have been credited retroactively.
Jump from a buyer to their full call history
newThe buyer profile panel now has a "View all calls" button that opens your call log pre-filtered to that buyer, alongside the existing "Open full profile".