Documentation

Tagioo reference docs

Technical detail for every part of the platform. New here? Start with the full setup guide instead — this page is for reference once you're up and running.

Getting Started

Every Tagioo account starts on the Free plan (15,000 events/month, forever). Launch flow, top to bottom:

  • Create your Tagioo account and a GTM Server container
  • Point a subdomain at Tagioo via one CNAME record
  • Create a container in your Tagioo dashboard
  • Generate and import Web + Server GTM templates via Setup Assistant
  • Connect your store (WooCommerce plugin or the self-service Laravel Bridge)
  • Test in Meta Events Manager and confirm events in your dashboard

See the full step-by-step walkthrough for screenshots and detail on each step.

WooCommerce Plugin

Download the Tagioo plugin from your dashboard's Setup Assistant, upload it under Plugins → Add New → Upload Plugin in WordPress, activate, and paste your container's tracking ID when prompted. No GTM4WP or manual dataLayer coding needed.

Once active, it automatically pushes these events to the dataLayer on every relevant page:

  • page_view — every page load, with page_location and page_title set explicitly
  • view_item — product page views
  • add_to_cart — cart additions, with product ID, price, quantity
  • begin_checkout — checkout page reached
  • purchase — completed order, with transaction ID, value, and items
  • Hashed user_data (email, phone) on purchase for Meta CAPI match quality, where available

Laravel Setup

This is the complete self-service order for connecting a Laravel ecommerce store. The private cPanel Bridge is connected and mapped first; the GTM files are generated only after Tagioo understands the store's orders.

Create containersCreate BridgeUpload ZIPAdd CronCheck connectionMap fieldsGenerate GTM filesTest

Before starting: create one Web container and one Server container in Google Tag Manager, create the Tagioo container and tracking domain, and make sure the customer can access cPanel File Manager and Cron Jobs. Add only the Web GTM ID to the Laravel website.

Step 1 — Select Laravel and create the private Bridge package

  1. Open Tagioo → Setup Assistant.
  2. Select Ecommerce and Laravel / Custom Ecommerce.
  3. Enter the store's public URL, including https://, and confirm its default currency.
  4. Continue to the Laravel Bridge area and click Download private ZIP.

The ZIP is unique to this store and tenant. Do not reuse it for another customer and do not share config.php or its private secret.

Step 2 — Upload and extract the Bridge in the cPanel home directory

  1. Open cPanel → File Manager.
  2. Go to the account's home directory, which is one level above public_html.
  3. Upload the private ZIP and click Extract.
  4. Confirm that the result is /home/CPANEL_USERNAME/tagioo-bridge/ and that it is outside public_html.
  5. Open tagioo-bridge/README.txt. It contains the installation rules and the Cron command.
Tagioo cPanel Bridge README showing the safe installation location and Cron command
The downloaded README explains where the private folder belongs and provides the command format. Replace every placeholder with this customer's cPanel path.

Step 3 — Add the once-per-minute Cron Job

  1. Open cPanel → Cron Jobs.
  2. Choose Once Per Minute. All five schedule fields should contain *.
  3. Paste the complete command from README.txt.
  4. Confirm the PHP executable, cPanel username, and Bridge path belong to this hosting account.
  5. Click Add New Cron Job.
/usr/local/bin/php /home/CPANEL_USERNAME/tagioo-bridge/bridge.php run >> /home/CPANEL_USERNAME/tagioo-bridge/cron.log 2>&1

Use the logging version during setup so any error is visible in cron.log. The log suffix does not make tracking work; it only records output. After the integration is Live, replace it with the production command below so the log does not grow forever.

/usr/local/bin/php /home/CPANEL_USERNAME/tagioo-bridge/bridge.php run > /dev/null 2>&1
cPanel Cron Jobs form configured to run the Tagioo Bridge once per minute
Example cPanel schedule. Each customer must use their own home path and the PHP 8.1+ CLI path supplied by their host.

Step 4 — Return to Tagioo and check the connection

  1. Wait one or two minutes for the first Cron run.
  2. Return to the Laravel Bridge area in Setup Assistant.
  3. Click Check connection.
  4. If the status remains Not connected, wait for another run and open tagioo-bridge/cron.log in File Manager.
Tagioo Laravel setup waiting for the first Cron run
“Not connected” immediately after installation normally means Tagioo is waiting for the first Cron run.

About laravel_root: leave it blank. Tagioo detects the Laravel application automatically when the hosting account contains one app. Set it manually only if cron.log says that more than one Laravel app was found or Laravel could not be found.

Step 5 — Review Advanced mapping before activation

When the Bridge connects, Tagioo detects safe schema metadata—table and column names, not the customer's database password or historical customer records. A Needs mapping status means the Bridge is working but one or more detected choices need confirmation.

Tagioo Laravel Bridge connected with Needs Mapping status and Advanced mapping available
Open Advanced mapping whenever Tagioo shows “Needs mapping.” Do not activate tracking until the required fields are correct.
  1. Open Advanced mapping.
  2. Confirm the orders table, order total, status, created time, updated time, items table, item reference, product ID/name, item price, and quantity.
  3. For Order ID, choose the customer-facing invoice or order number—usually invoice_id, invoice_number, invoice_no, order_number, or order_no. Do not choose an internal id if the storefront displays a different invoice number.
  4. For COD stores, add every database status that represents a valid placed order. This may include pending or a numeric value such as 1.
  5. Click Save mapping and detect again, wait for the next Cron run, and confirm Tagioo reports the mapping as ready.
Laravel Advanced mapping with invoice_id selected as the public Order ID
Example mapping: the public invoice_id is selected instead of the internal row ID, and the store's valid COD status values are included.

Click Activate tracking after the mapping is correct. Activation checkpoints existing orders, so only orders created afterward are treated as new purchases.

Step 6 — Select destinations and generate the Web and Server GTM files

  1. Continue through Setup Assistant to Select destinations.
  2. Check only the platforms the customer uses. GA4 and Meta are the initial defaults; Google Ads and TikTok remain excluded unless selected.
  3. Enter the credentials requested for those selected destinations.
  4. Generate and download tagioo-web-template.json and tagioo-server-template.json.
  5. Import the Web file into the Web GTM container and the Server file into the Server GTM container.
  6. For a clean first import, choose Merge. For an updated Tagioo template, choose Merge → Overwrite conflicting tags, triggers, and variables.
  7. Do not publish yet. Open Preview mode for both containers first.

Step 7 — Test the browser events in Web GTM Preview

  1. Connect GTM Preview to the Laravel website.
  2. Open one normal page, one product, add the product to the cart, continue to checkout, and complete one new order.
  3. Confirm the corresponding Tagioo tags fire on the correct event. One action should not create several independent browser copies.
Web GTM Preview showing Tagioo PageView, ViewContent, AddToCart, InitiateCheckout, and Purchase tags
Use GTM Preview to confirm that the Tagioo tags fire on the expected storefront actions before publishing.

Step 8 — Verify the backend Purchase in Tagioo

  1. Create the test order only after Bridge activation.
  2. Make sure the order reaches one of the valid mapped statuses.
  3. Wait up to two minutes for the Cron Job.
  4. Return to Tagioo and click Verify test order.
  5. Confirm the public invoice/order number, value, currency, items, and selected destinations.

Step 9 — Verify Meta browser/server deduplication

  1. Open Meta Events Manager → Test events and select Website.
  2. Use the same test event code entered in Tagioo and clear earlier activity before the new test.
  3. Browser and Server rows are expected. For one logical event, the event names and Event IDs must match exactly; Meta normally marks one row as Deduplicated.
  4. For Purchase, compare the Event ID with the public invoice/order ID mapped in Tagioo.
Meta Test Events displaying Browser and Server events with Event IDs
Compare “Received From,” event name, and Event ID. Browser + Server is correct only when the matching pair represents one deduplicated event.

Step 10 — Publish and switch the Cron Job to production output

  1. Publish the Web and Server GTM containers after Tagioo, GTM Preview, and the selected destinations all pass.
  2. Edit the Cron command and replace the temporary cron.log suffix with > /dev/null 2>&1.
  3. Leave the once-per-minute Cron Job enabled.

Duplicate events from existing website tracking

Keep the Laravel site's standard ecommerce dataLayer pushes, but disable older GTM tags or hard-coded fbq('track', ...), fbq('trackCustom', ...), and ttq.track(...) calls that send the same events directly.

Tagioo funnel Event IDs normally begin with tagioo-. An ID such as ob3_plugin-set_... is created by another script on the Laravel website, not by Tagioo.

Meta event details showing an ob3_plugin-set Event ID from another website script
This ob3_plugin-set_ Event ID identifies a separate website-side Meta sender. Disable that duplicate sender if Tagioo is responsible for the same event.

Safety, pausing, and removal

The Bridge uses read-only database SELECT queries, does not edit Laravel source files, and does not run migrations. Keep the ZIP, config.php, logs, and secret outside public_html. Use Pause tracking in Tagioo or disable the Cron Job for an immediate stop. Removing the Cron Job and tagioo-bridge folder removes the Bridge without changing the Laravel website.

GTM Setup Assistant

Prefer to follow along? Watch the complete Tagioo server-side tracking setup video ↗.

A 4-step wizard in your dashboard that generates two ready-to-import JSON files:

  • web.json — imports into your Web GTM container: dataLayer listeners, the Custom Loader tag, and Consent Mode v2 defaults
  • server.json — imports into your Server GTM container with the server tags and credentials required by the destinations selected in the assistant

For a first import, use Import Container → Merge. When updating an existing Tagioo setup, use Merge → Overwrite conflicting tags, triggers, and variables. Review in Preview mode, then Publish both containers.

First-party Domain & SSL

Point a subdomain you own at Tagioo with a single CNAME record:

track.yoursite.com CNAME bd.tagioo.com

Once DNS propagates (usually minutes, sometimes up to a few hours), Tagioo automatically provisions an SSL certificate via Let's Encrypt and renews it silently — no action needed from you. This is also the domain the Custom Loader uses to serve gtm.js/gtag.js first-party, which is what lets tracking survive Brave and most ad-blockers.

Offline Conversions

Available on Pro and Enterprise. Upload a CSV of phone, COD, or in-store orders from your dashboard's Offline Conversions view. Expected columns:

order_id, value, currency, email, phone, event_time

Email and phone are hashed client-side before upload. You'll see a validation preview before confirming, and every upload is logged with a per-batch history so you can see exactly what was sent to Meta CAPI and when.

Purchase Gap Alert

Tagioo compares today's purchase count against your trailing 7-day average, scaled for time of day so it doesn't false-positive at 9am. If today's count runs more than 50% below that baseline, a red banner appears in your dashboard the same day — instead of you noticing days later via a bad ROAS number.

On the Free plan, usage against your 15,000 events/month cycle is tracked the same way: you're notified by email and WhatsApp as you approach the limit (at rising thresholds from 10K events), and your container pauses if you reach 15,000 until the 30-day cycle resets or you upgrade.

Troubleshooting

Events not showing up in Meta Test Events? Confirm your Server GTM container is published (not just saved), check the container status in your Tagioo dashboard is "Running," and verify your domain's SSL certificate is issued (a padlock on https://track.yoursite.com).

Purchases missing after a WooCommerce order? Check the WordPress plugin is active and its container tracking ID matches your dashboard. Use the Purchase Inspector in your dashboard to search by order ID and see exactly which destinations (Meta, GA4) received it.

ROAS suddenly dropped? Check the dashboard's Purchase Gap Alert first — it's built for exactly this. If it's not flagging anything, check your 30-day table for a spike in errors on the affected day.

Still stuck? Message us on WhatsApp — free setup help.