1. Go to this page and download the library: Download axitrace/php-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
axitrace / php-sdk example snippets
xiTrace\AxiTrace;
use AxiTrace\Config;
use AxiTrace\Model\Event\PageViewEvent;
// Initialize with your secret key
$config = new Config('sk_live_your_secret_key_here');
$axiTrace = new AxiTrace($config);
// Track a page view
$event = (new PageViewEvent('https://example.com/page'))
->setClientId('visitor-123')
->setTitle('My Page');
$response = $axiTrace->events()->send($event);
if ($response->isSuccess()) {
echo "Event tracked! ID: " . $response->getEventId();
}
use AxiTrace\Config;
use AxiTrace\AxiTrace;
$config = new Config('sk_live_your_secret_key_here');
$axiTrace = new AxiTrace($config);
use AxiTrace\Config;
use AxiTrace\AxiTrace;
$config = new Config('sk_live_your_secret_key_here', [
'base_url' => 'https://stat.axitrace.com',
'timeout' => 60,
'verify_ssl' => true,
'debug' => false,
]);
$axiTrace = new AxiTrace($config);
// Set AXITRACE_SECRET_KEY environment variable
$config = Config::fromEnvironment();
$axiTrace = new AxiTrace($config);
use AxiTrace\Model\Event\CustomEvent;
$event = new CustomEvent(
'quote_requested', // the pre-registered key
['menu_name' => 'Salad'], // declared properties
149.50, // optional value (conversion kind only)
'PLN', // optional currency
'order-1001', // optional transaction id
'dedup-id-1' // caller-supplied event_id (safe to retry)
);
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\PageViewEvent;
$event = (new PageViewEvent('https://example.com/page'))
->setClientId('visitor-123')
->setSessionId('session-456')
->setTitle('Page Title')
->setReferrer('https://google.com');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\ProductViewEvent;
use AxiTrace\Model\Product;
$product = (new Product('SKU-001'))
->setItemName('Product Name')
->setPrice(99.99)
->setCurrency('USD')
->setItemBrand('Brand')
->setItemCategory('Category');
$event = ProductViewEvent::fromArray([
'item_id' => 'SKU-001',
'item_name' => 'Product Name',
'price' => 99.99,
]);
$event->setClientId('visitor-123');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\AddToCartEvent;
use AxiTrace\Model\Product;
$product = (new Product('SKU-001'))
->setItemName('Product Name')
->setPrice(99.99)
->setCurrency('USD')
->setQuantity(2);
$event = (new AddToCartEvent('USD', 199.98))
->setClientId('visitor-123')
->addItem($product);
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\RemoveFromCartEvent;
use AxiTrace\Model\Product;
$product = (new Product('SKU-001'))
->setItemName('Product Name')
->setPrice(99.99)
->setQuantity(1);
$event = (new RemoveFromCartEvent('USD', 99.99))
->setClientId('visitor-123')
->addItem($product);
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\BeginCheckoutEvent;
use AxiTrace\Model\Product;
$event = (new BeginCheckoutEvent('USD', 299.99))
->setClientId('visitor-123')
->addItem((new Product('SKU-001'))->setItemName('Product 1')->setPrice(199.99)->setQuantity(1))
->addItem((new Product('SKU-002'))->setItemName('Product 2')->setPrice(100.00)->setQuantity(1))
->setCoupon('SAVE10');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\AddShippingInfoEvent;
use AxiTrace\Model\Product;
$event = (new AddShippingInfoEvent('USD', 299.99))
->setClientId('visitor-123')
->addItem((new Product('SKU-001'))->setItemName('Product 1')->setPrice(299.99)->setQuantity(1))
->setShippingTier('express')
->setCoupon('SAVE10');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\AddPaymentInfoEvent;
use AxiTrace\Model\Product;
$event = (new AddPaymentInfoEvent('USD', 299.99))
->setClientId('visitor-123')
->addItem((new Product('SKU-001'))->setItemName('Product 1')->setPrice(299.99)->setQuantity(1))
->setPaymentType('credit_card')
->setCoupon('SAVE10');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\TransactionEvent;
use AxiTrace\Model\Money;
$orderId = 'ORDER-123';
$event = TransactionEvent::create(
$orderId,
299.99, // Revenue
279.99, // Value (after discounts)
'USD', // Currency
'CARD', // Payment method
TransactionEvent::SOURCE_WEB_DESKTOP
);
$event->setClientCustomId('visitor-123')
->setClientEmail('[email protected]')
->setClientPhone('+14155552671')
// eventSalt is the ONLY dedup guard for this endpoint - see "Products and eventSalt"
// below. Using the orderId is the recommended value.
->setEventSalt($orderId)
->setProducts([
[
'sku' => 'SKU-001',
'name' => 'Product 1',
// A bare number is fine - see "Products and eventSalt" below for the full shape rules.
'finalUnitPrice' => 279.99,
'quantity' => 1,
],
])
->setDiscountAmount(new Money(20.00, 'USD'));
$axiTrace->events()->send($event);
use AxiTrace\Model\Product;
$event->setProducts([
(new Product('SKU-001'))->setItemName('Product 1')->setPrice(279.99)->setQuantity(1),
]);
use AxiTrace\Model\Event\SubscribeEvent;
$event = (new SubscribeEvent('[email protected]'))
->setClientId('visitor-123')
->setSubscriptionType('newsletter');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\StartTrialEvent;
$event = (new StartTrialEvent('Pro Plan'))
->setClientId('visitor-123')
->setTrialPeriodDays(14)
->setTrialValue(49.99, 'USD');
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\SearchEvent;
$event = (new SearchEvent('wireless headphones'))
->setClientId('visitor-123')
->setResultsCount(42)
->setCategory('Electronics')
->setFilters(['brand' => 'Sony', 'price_max' => 200])
->setSortBy('relevance')
->setPage(1);
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\ViewItemListEvent;
use AxiTrace\Model\Product;
$event = (new ViewItemListEvent())
->setClientId('visitor-123')
->setItemListId('category-electronics')
->setItemListName('Electronics')
->addItem((new Product('SKU-001'))->setItemName('Product 1')->setPrice(99.99)->setIndex(0))
->addItem((new Product('SKU-002'))->setItemName('Product 2')->setPrice(149.99)->setIndex(1));
$axiTrace->events()->send($event);
use AxiTrace\Model\Event\SelectItemEvent;
use AxiTrace\Model\Product;
$product = (new Product('SKU-001'))
->setItemName('Product 1')
->setPrice(99.99)
->setIndex(0);
$event = (new SelectItemEvent($product))
->setClientId('visitor-123')
->setItemListId('category-electronics')
->setItemListName('Electronics');
$axiTrace->events()->send($event);
use AxiTrace\AxiTrace;
$axiTrace = AxiTrace::init('sk_live_your_secret_key_here');
// Values captured during the original HTTP request and persisted on the order,
// not read from $_COOKIE/$_SERVER here - there is no request to read them from.
$axiTrace->withContext([
'clientId' => $order->getVisitorId(), // vt_vid cookie value, captured at checkout
'sessionId' => $order->getSessionId(), // vt_sid cookie value, captured at checkout
'ip' => $order->getCustomerIp(),
'userAgent' => $order->getCustomerUserAgent(),
])->transaction(
$order->getId(),
$order->getRevenue(),
$order->getValue(),
$order->getCurrency(),
$order->getPaymentMethod(),
$order->getProductsForTracking(),
[
'event_salt' => $order->getId(), // webhooks retry - always set eventSalt here
'recorded_at' => $order->getCreatedAt(), // when the order was placed, not when this job runs
]
);
// Facade: a DateTimeInterface or an ISO 8601 string
$axiTrace->transaction($orderId, 299.99, 279.99, 'USD', 'CARD', $products, [
'event_salt' => $orderId,
'recorded_at' => new DateTimeImmutable('2026-09-17 14:05:07', new DateTimeZone('Europe/Warsaw')),
]);
// Event model
$event->setRecordedAt($order->getCreatedAt());
use AxiTrace\Model\Event\TransactionEvent;
use AxiTrace\Model\Money;
use AxiTrace\Model\Product;
$event = TransactionEvent::create($orderId, 299.99, 279.99, 'EUR', 'CARD');
$event->setClientCustomId($axiTrace->getVisitorId() ?? $order->getCustomerId())
->setEventSalt($orderId)
->setTax(52.31) // total tax of the order
->setShipping(9.99) // shipping the buyer paid, tax ir',
'finalUnitPrice' => 149.99,
'quantity' => 2,
'unitCost' => 71.50, // what one unit cost you
'externalId' => 'woocommerce:1234', // the product id in your store platform
],
]);
// Or with the Product model
$event->addProduct(
(new Product('ITEM-2'))->setSku('SKU-002')->setItemName('Desk mat')
->setPrice(19.99)->setQuantity(1)->setUnitCost(6.20)->setExternalId('woocommerce:88')
);
$axiTrace->track($event);
$axiTrace->refund(
$orderId, // the orderId the transaction was sent with
$creditMemo->getId(), // your refund id: a retry with the same id is recorded once
59.98, // total refunded to the buyer
'EUR', // currency of the original transaction
[
// Refunded lines: identify each product by sku, externalId or both
['sku' => 'SKU-001', 'externalId' => 'woocommerce:1234', 'quantity' => 1, 'amount' => 49.99],
['sku' => 'SKU-002', 'quantity' => 1, 'amount' => 9.99],
],
[
'refunded_at' => $creditMemo->getCreatedAt(), // DateTimeInterface or ISO 8601; default now
'is_cancellation' => false, // true when the whole order was cancelled
]
);
use AxiTrace\Exception\ValidationException;
try {
$axiTrace->withContext(['consent' => 'accepted']); // not a valid state
} catch (ValidationException $e) {
// Invalid consent state "accepted". Use one of: granted, denied, unknown.
}
$event = (new PageViewEvent('https://example.com'))
->setClientId('visitor-123')
->setFbp('fb.1.1234567890.987654321')
->setFbc('fb.1.1234567890.AbCdEfGh');
$axiTrace->events()->send($event);