TapCub is live — analytics, insights and live chat, free on one platform

Free tool Tracking plan generator: start from an industry template, not a blank sheet

A tracking plan is the list of events your product sends and the properties each one carries. Pick one of 10 industry templates — the same event definitions TapCub installs in the product — keep the events you need, add your own, and download the plan as CSV or Markdown for the team that writes the code.

  • 10 templates · 111 events
  • CSV + Markdown
  • Runs locally
Tracking plan

Pick a template, tick the events

Required events are marked: the template’s dashboards and funnels depend on them. “Sent from” is where the event should be reported; payments and refunds are server-only so ad blockers and retries cannot distort them.

Install this template in TapCub

The core e-commerce path: search / view item → add to cart → checkout → purchase → refund. Event names match the default mapping of the Commerce & Revenue module (view_item / add_to_cart / begin_checkout / purchase / refund), so it shows data right after install. purchase / refund must be reported server-side, deduplicated by order number via insert_id. Multi-store retail uses the store as a group.

Events in this template

Discovery

Cart

Checkout

After sale

One event per line: event_name | Display name | property:type, property:type!. Types: string, number, boolean, array; ! marks a required property. Names follow the TapCub event catalog rule: lowercase letters, digits and underscores, starting with a letter, up to 40 characters, not starting with $, _ or tc_.

Events

9

Properties

36

Required events

4

Server-only events

2

Event table

EventDisplay nameCategoryRequiredSent fromPropertiesNotes
searchSite searchDiscoveryOptionalWeb, Mini program, App2
view_itemView itemDiscoveryRequiredWeb, Mini program, App4
add_to_wishlistAdd to wishlistDiscoveryOptionalWeb, Mini program, App1
add_to_cartAdd to cartCartRequiredWeb, Mini program, App4
remove_from_cartRemove from cartCartOptionalWeb, Mini program, App1
view_cartView cartCartOptionalWeb, Mini program, App2
begin_checkoutBegin checkoutCheckoutRequiredWeb, Mini program, App3
purchasePurchaseCheckoutRequiredServer10Reported server-side when the order is paid; insert_id = order number; revenue is the amount paid; multi-store adds group=store:<store ID>
refundRefundAfter saleOptionalServer3

Property table

Rows written as items[].price are the fields of each element in an array property.

EventPropertyTypeRequiredUnitAllowed valuesDescription
searchquerystringRequired——
searchresultsnumberOptional——Number of results; 0 = no-result search
view_itemitem_idstringRequired——
view_itemcategorystringOptional——
view_itempricenumberOptionalcurrency amount—
view_itemcurrencystringOptional——
add_to_wishlistitem_idstringRequired——
add_to_cartitem_idstringRequired——
add_to_cartquantitynumberOptional——
add_to_cartvaluenumberOptionalcurrency amount—
add_to_cartcurrencystringOptional——
remove_from_cartitem_idstringRequired——
view_cartvaluenumberOptional——
view_cartitems_countnumberOptional——
begin_checkoutvaluenumberOptionalcurrency amount—
begin_checkoutitems_countnumberOptional——
begin_checkoutcouponstringOptional——
purchaseorder_idstringRequired——
purchaserevenuenumberRequiredcurrency amount—
purchasecurrencystringRequired——
purchaseitems_countnumberOptional——
purchasecouponstringRecommended——Order-level coupon code; promotion reports group by this
purchasepayment_methodstringOptional—wechat / alipay / card / cod / other
purchasestore_idstringOptional——
purchaseitemsarray of objectsRecommended——Order line items [{item_id, name, category, price, quantity, coupon?}]; without them, product / promotion reports can only use the order-level coupon
purchaseitems[].item_idstringRequired——
purchaseitems[].namestringOptional——
purchaseitems[].categorystringOptional——
purchaseitems[].pricenumberOptionalcurrency amount—
purchaseitems[].quantitynumberOptional——
purchaseitems[].couponstringOptional——
purchasepromotionstringRecommended——Promotion name (e.g. Black Friday / spend-and-save)
purchasediscountnumberOptionalcurrency amount—Discount amount
refundorder_idstringRequired——
refundrevenuenumberRequiredcurrency amount—
refundreasonstringOptional—quality / size / changed_mind / delay / other
Generate the tracking code

Opens the data layer generator with these events and properties loaded, for GA4 dataLayer / GTM or the TapCub web, mini-program, app and server SDKs.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Version v1.0Updated Update history

Read the result

What each part of the plan is for

Two tables are enough for most teams: one row per event, one row per property. Everything else — owners, release dates, screenshots — can be added as extra columns in your spreadsheet.

Required events

The ones the template’s dashboards, funnels and metrics are built on. In the e-commerce template that is view_item, add_to_cart, begin_checkout and purchase. Leave one out and a funnel step stays empty.

Sent from

Where the event should be reported. Web and app events describe what a person did on screen; server events record facts — a payment, a refund, a renewal — that must not be lost to an ad blocker or counted twice by a retry.

Required and recommended properties

Required properties are what the metrics read (revenue and currency for revenue, order_id for de-duplication). Recommended ones unlock extra reports, such as line items for product and promotion reports.

Server-only events

Send them with a server SDK and use the order or document number as insert_id, so a retried request does not create a second order.

The template is a starting point. Remove what you will never analyse: every extra event is something to test, document and keep working.

How to use it

From template to a plan the team can build

Ten minutes for a first version; then review it with whoever writes the code.

  1. 1

    Pick the closest industry

    Selling online is e-commerce, subscriptions are B2B / SaaS, forms and calls are lead generation. Several templates can be combined later.

  2. 2

    Keep what you will use

    Start with “Required only”, then add the events behind questions you actually ask. Fewer, well-defined events beat a long list nobody maintains.

  3. 3

    Add your own events

    One line each, with properties and types. The tool checks names against the TapCub event catalog rule as you type.

  4. 4

    Export and hand over

    Download the CSV for a spreadsheet, the Markdown for a wiki or pull request, or open the data layer generator to get the code.

Rules

What goes into each column

The columns follow the industry pack format the product uses, so a plan written here maps one to one to what TapCub installs. See tracking plan and event properties in the glossary.

  • Event name: the key stored with every event. Lowercase snake_case, starting with a letter, up to 40 characters; $, _ and tc_ prefixes are reserved.
  • Display name: what people see in reports. It can change later; the event name should not.
  • Property type: string, number, boolean, or an array of objects such as order lines. The website script keeps only strings, numbers and booleans, so arrays belong on server events.
  • Units: amounts are marked as currency amounts and always travel with a currency property; durations are in seconds.
Columns in the export
ColumnMeaningExample
EventName sent in codepurchase
RequiredDashboards and funnels depend on itRequired
Sent fromWeb, mini program, app or serverServer
PropertyKey inside the eventrevenue
Type / unitHow the value is storednumber · currency amount
Allowed valuesFixed list, when there is onewechat / alipay / card
Worked example

The purchase event in the e-commerce template

This is how the default template describes a paid order, straight from the product’s pack definition.

purchase · sent from the server
PropertyTypeRequiredWhy it is there
order_idstringRequiredAlso used as insert_id, so a retried request is not a second order
revenuenumber (currency amount)RequiredAmount paid; revenue reports and average order value read it
currencystringRequiredNeeded to convert mixed currencies
itemsarray of objectsRecommendedLine items with item_id, name, category, price, quantity — without them product reports only see the order
couponstringRecommendedPromotion reports group by it

The defaults here — purchase, revenue, currency, order_id — are also the default mapping of the commerce report, so an order sent this way shows up there without extra settings.

Common mistakes

Where tracking plans go wrong

Most problems are not missing events but events nobody can trust.

Renaming live events

Once an event is collecting, its name is the key in your data. Rename the display name instead, or every chart splits in two.

Tracking revenue in the browser only

Ad blockers, closed tabs and double clicks all distort a front-end purchase event. Record payments on the server with the order number as the de-duplication key.

One event per button

button_1_click, button_2_click… makes analysis impossible. One event with a property (which button, which plan) is easier to chart and to maintain.

Raw personal data in properties

Email addresses, phone numbers and free-text input do not belong in event properties. Hash identifiers or leave them out.

FAQ

Tracking plan questions

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

What is a tracking plan?

A shared document listing every event your product sends, the properties each one carries, their types and where they are sent from. It is the contract between the people who ask questions of the data and the people who write the tracking code. See tracking plan.

Is there a tracking plan template for Excel or Google Sheets?

Yes — download the event table and property table here as CSV and open them in Excel, Numbers or Google Sheets. Keep the BOM option on if Excel shows garbled characters.

How many events should a tracking plan have?

As few as answer your questions. The templates here have 9 to 14 events each, with 2 to 6 marked required. Add events when a real question needs them, not in case.

Should events be sent from the browser or the server?

Behaviour on screen (views, clicks, add to cart) from the browser or app SDK; money and state changes (payments, refunds, renewals) from the server, where they cannot be blocked and can be de-duplicated.

Does this tool suggest event names?

No. It checks the format of the names you write against the TapCub event catalog rule. The template events already follow one naming style you can copy.

How do I turn the plan into code?

Click “Generate the tracking code”. The data layer generator opens with your events and properties, and writes GA4 dataLayer / GTM steps or the TapCub SDK call for web, mini program, app or server.

Do I need a tracking plan before installing TapCub?

No. The script records pageviews, sources and clicks from the start, and an industry template can be installed later. A plan helps most when several teams send events by hand.

Is anything I type uploaded?

No. The templates are built into the page and everything is generated in your browser.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics