Skip to main content

Conversions

Track purchases, leads, signups, and other goal completions with monetary value.

Syntax

sealmetrics.conv(type, amount);
sealmetrics.conv(type, amount, properties);
ParameterTypeRequiredDescription
typestringYesConversion name (e.g., 'purchase', 'lead', 'signup')
amountnumberYesMonetary value. Use 0 for non-monetary conversions
propertiesobjectNoCustom key-value data

Examples

Purchase

sealmetrics.conv('purchase', 99.99);

Purchase with Properties

sealmetrics.conv('purchase', 149.99, {
order_id: 'ORD-2025-001234',
currency: 'EUR',
payment_method: 'credit_card',
coupon: 'SAVE10'
});

Lead (No Monetary Value)

sealmetrics.conv('lead', 0, {
form_name: 'contact_form',
source: 'homepage'
});

Signup

sealmetrics.conv('signup', 0, {
plan: 'trial',
referral_code: 'FRIEND20'
});

Subscription Purchase

sealmetrics.conv('purchase', 49, {
plan: 'pro_monthly',
currency: 'USD',
billing_cycle: 'monthly'
});

E-commerce Implementation

Thank You Page

Place on your order confirmation page:

<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID&group=checkout" defer></script>
<script>
// Wait for tracker to load
window.addEventListener('load', function() {
sealmetrics.conv('purchase', 189.99, {
order_id: 'ORD-2025-001234',
currency: 'EUR',
items_count: '3',
payment_method: 'credit_card'
});
});
</script>

Dynamic Values (Server-Side Rendering)

<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID&group=checkout" defer></script>
<script>
window.addEventListener('load', function() {
sealmetrics.conv('purchase', <?php echo $order->total; ?>, {
order_id: '<?php echo $order->id; ?>',
currency: '<?php echo $order->currency; ?>'
});
});
</script>

WooCommerce

In functions.php or a custom plugin:

add_action('woocommerce_thankyou', function($order_id) {
$order = wc_get_order($order_id);
?>
<script>
window.addEventListener('load', function() {
sealmetrics.conv('purchase', <?php echo $order->get_total(); ?>, {
order_id: '<?php echo $order_id; ?>',
currency: '<?php echo $order->get_currency(); ?>',
payment_method: '<?php echo $order->get_payment_method(); ?>'
});
});
</script>
<?php
});

Shopify

In your checkout.liquid or via Shopify Additional Scripts:

<script>
window.addEventListener('load', function() {
sealmetrics.conv('purchase', {{ checkout.total_price | money_without_currency | remove: ',' }}, {
order_id: '{{ order.name }}',
currency: '{{ checkout.currency }}'
});
});
</script>

SaaS Implementation

Free Trial Signup

document.querySelector('#signup-form').addEventListener('submit', function(e) {
sealmetrics.conv('signup', 0, {
plan: 'trial',
source: 'pricing_page'
});
});
// After successful payment
sealmetrics.conv('purchase', 49, {
plan: 'pro',
billing_cycle: 'monthly',
currency: 'USD'
});

Plan Upgrade

sealmetrics.conv('upgrade', 99, {
from_plan: 'starter',
to_plan: 'pro',
currency: 'USD'
});

Properties Reference

Common properties to include:

PropertyDescriptionExample
order_idUnique order identifier'ORD-2025-001234'
currencyISO 4217 currency code'EUR', 'USD', 'GBP'
payment_methodPayment type'credit_card', 'paypal', 'bank_transfer'
couponDiscount code used'SAVE10'
items_countNumber of items'3'
planSubscription plan name'pro', 'enterprise'
billing_cycleBilling frequency'monthly', 'yearly'
Property Values Must Be Strings

All property values are transmitted as strings. Numbers and booleans are automatically converted.

// Both work the same:
sealmetrics.conv('purchase', 99, { items_count: 3 });
sealmetrics.conv('purchase', 99, { items_count: '3' });

Timing

Conversions Count as Pageviews

Every conversion event also counts as a pageview. Do not call sealmetrics() separately on the same page.

Wait for Tracker to Load

If calling conversion immediately on page load, wait for the script:

window.addEventListener('load', function() {
sealmetrics.conv('purchase', 99.99);
});

Or check if function exists:

if (typeof sealmetrics !== 'undefined') {
sealmetrics.conv('purchase', 99.99);
}

Deduplication

Sealmetrics does not deduplicate conversions automatically. To prevent duplicate tracking:

  1. Server-side flag: Mark orders as "tracked" in your database
  2. One-time page: Redirect after conversion so refreshing doesn't re-trigger
  3. Session check: Use your own session logic to track if conversion was already sent

Example with localStorage (client-side):

var orderId = 'ORD-2025-001234';
if (!localStorage.getItem('tracked_' + orderId)) {
sealmetrics.conv('purchase', 99.99, { order_id: orderId });
localStorage.setItem('tracked_' + orderId, 'true');
}
note

Sealmetrics does not use localStorage, but your deduplication logic can.