Skip to content

Skynet Internet: campaign pricing without touching the shop

Campaign landing pages with order-scoped pricing for a regional broadband provider 

Field Detail 
Client Skynet Internet — regional broadband provider and authorised DirecTV dealer 
Platform WordPress / WooCommerce (skynetint.com) 
Delivered by PakAmGlobal LLC 
Engagement Change Order to existing SOW — market-specific pricing landing pages 
Stack WordPress, WooCommerce, WooCommerce Subscriptions, custom PHP plugin 
Status Delivered; pending client acceptance and production deployment 

1. What was the problem? 

Skynet Internet sells broadband and DirecTV packages online and through field sales — reps at events, door to door, and partner hand-outs. Pricing on skynetint.com was a single national rate card. 

That created a commercial constraint. Broadband is priced against whoever else serves a given street, so the rate that wins a customer in Reno is not the rate that wins one in New York. Skynet had no way to quote a market-competitive number without changing the price everyone sees. 

The request that reached us was narrow: a hidden page, reachable only by QR code, showing different prices. Working through it surfaced a larger problem underneath. 

  • Duplicating products does not scale. A separate hidden product per market means a new SKU for every market and package combination, each needing its own price edits and stock settings. It also fragments reporting: “how much 1 Gig did we sell” becomes a manual sum across a dozen SKUs. 
  • Campaign pricing must not leak. Any approach that alters the product itself risks the campaign rate appearing on the public shop, the product page, or a search result. 
  • Subscriptions raise the stakes. These are recurring products. A pricing mistake does not produce one wrong order — it produces a wrong monthly bill for the life of every affected subscription. 
  • It had to be run by the marketing team. A system that needs a developer to open a market is a system that will not be used. 

2. What solution did we provide? 

A custom WooCommerce extension that turns a campaign into a self-contained, self-service object. 

Each campaign is a landing page with its own web address, its own QR code, its own prices, its own plan cards and its own optional add-on step. Marketing creates one by filling in fields — no code, no new products, no developer ticket. 

The design principle that shaped everything 

A campaign price is a property of the order, not of the product. Skynet’s real prices are never modified. A landing page can sell a $75 product at $60 in one market and $45 in another, while the public shop continues to show $75 to everyone who arrives through it. All three are simultaneously correct because they are not the same fact. 

Alongside the pricing, the build includes: 

  • QR code per campaign, generated in the browser and downloadable at print resolution, so codes never pass through a third-party service. 
  • An add-on step before checkout — a customer buying internet is offered TV packages, priced for that campaign, choosing one or none in a single tap. 
  • Campaign attribution on every order, so sales can be traced to the code that produced them. 
  • Subscriptions safety — a customer keeps the rate they signed up at for the life of the subscription, and repricing a campaign later affects new orders only. 
  • Unlisted by design — campaign pages are excluded from navigation, internal search and XML sitemaps, and served noindex. 

3. How did we implement it? 

Scoping through iteration 

The engagement began as a single restricted page and was reshaped twice as the real requirement emerged: first into market-based pricing, then into campaign-based landing pages once it was clear that a market layer added configuration without adding capability. We removed it rather than ship a concept the client would have to maintain. 

Pricing attached to the cart line 

The conventional approach is to filter WooCommerce’s product price hooks. Those filters are global — they fire wherever a product is priced, including the shop, the product page and the REST API — so a campaign price applied that way is a campaign price applied everywhere. 

Instead, the campaign travels on the add-to-cart link and the price is written onto that single cart line. Nothing is written to the product. A visitor who did not arrive through a landing page cannot receive a campaign price, because there is no line carrying one. The amount is read from the landing page’s stored settings rather than the URL, so it cannot be forged. 

Subscription renewals ruled out explicitly 

A renewal runs on cron with no browser and no campaign context. Left alone, a naive implementation would re-price every existing subscriber at whatever the current default happened to be. The extension withdraws entirely during renewals, resubscribes and scheduled payments, so renewals bill from the subscription’s own stored line items. 

A structured editor rather than a page builder 

Campaigns are a custom post type with defined fields — hero, repeatable plan rows, add-ons, questions and answers, badges, legal text. Prices are never typed into page content; plan rows reference products and read the price at render, so a page cannot advertise a figure the checkout will not honour. The template renders as a standalone canvas with no theme header or footer, keeping attention on the single decision the page exists to get. 

Details that decide whether it works in the field 

Product variations handled correctly throughout, since a comma-separated add-to-cart link cannot carry variation attributes. Add-ons scoped per plan, so a TV package is never offered as an add-on to a TV package. An emptied cart returns the customer to the campaign they arrived from rather than the generic shop. Assets excluded from script and style optimisers, which otherwise serve stale bundles and make a fixed deployment look unfixed. 

Handover 

Delivered with an acceptance checklist, a written sign-off document mapping each contractual deliverable to what shipped, and plain-language documentation of the limitations — including that a QR code is unlisted rather than secured, which is a property of the agreed approach and needed to be understood before codes were printed. 

4. What was the outcome and impact? 

Note for whoever publishes this — delete before release 

The build is complete and awaiting client acceptance and production deployment. The capability statements below are accurate today. The second table is a measurement plan, not results. Fill it with real figures after the first campaigns have run, or remove it. Do not publish estimated numbers as though they were measured. 

Capability delivered 

Before After 
One national rate card; no way to price a market Unlimited campaigns, each with independent pricing 
A new offer meant a developer ticket Marketing creates a campaign unaided, in minutes 
Market pricing would have meant duplicate SKUs per market One product catalogue, unchanged 
No way to attribute a sale to a campaign or a rep Every order records the campaign that produced it 
Cross-sell depended on the customer asking TV add-on offered to every internet customer before checkout 
Public pricing at risk from any campaign change Real product prices structurally cannot be altered by a campaign 

Results to capture once live 

Metric How to measure 
Time to launch a new market Wall-clock time from brief to published page 
Conversion rate by campaign Orders divided by page views, per campaign 
Add-on attach rate Share of internet orders that include a TV package 
Revenue per campaign Order totals grouped by the campaign field 
Scan-to-order rate Orders per campaign against codes distributed 

The attribution built into the system is what makes these measurable: because every order carries its campaign, Skynet can compare markets, channels and individual reps against each other rather than guessing which code is working.