Back to docs

Links

Signaler des conversions côté serveur

Signalez des conversions à Styrar depuis votre propre backend en Node.js, Python ou Ruby on Rails.

Si une conversion se produit sur votre backend plutôt que dans le navigateur — un webhook de votre prestataire de paiement, par exemple — lisez la valeur styrar_ck sur la requête d'origine et envoyez-la directement au même point de terminaison public utilisé par le pixel du navigateur. Voir Pixel de conversion pour la référence complète.

RequestPOST
Content-Type: application/json

{
  "clickToken": "the styrar_ck value",
  "eventName": "purchase",
  "value": 49.99
}

Node.js / Express

JavaScript
app.get('/checkout/complete', async (req, res) => {
  const clickToken = req.query.styrar_ck || req.cookies?.styrar_ck;
  if (clickToken) {
    fetch('https://api.styrar.com/v1/pixel/track', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ clickToken, eventName: 'purchase', value: req.session.orderTotal }),
    }).catch(() => {});
  }
  res.render('checkout-complete');
});

Python (Flask)

PYTHON
import requests

@app.route('/checkout/complete')
def checkout_complete():
    click_token = request.args.get('styrar_ck') or request.cookies.get('styrar_ck')
    if click_token:
        try:
            requests.post(
                'https://api.styrar.com/v1/pixel/track',
                json={'clickToken': click_token, 'eventName': 'purchase', 'value': order_total},
                timeout=2,
            )
        except requests.RequestException:
            pass
    return render_template('checkout-complete.html')

Python (Django)

PYTHON
import requests

def checkout_complete(request):
    click_token = request.GET.get('styrar_ck') or request.COOKIES.get('styrar_ck')
    if click_token:
        try:
            requests.post(
                'https://api.styrar.com/v1/pixel/track',
                json={'clickToken': click_token, 'eventName': 'purchase', 'value': order_total},
                timeout=2,
            )
        except requests.RequestException:
            pass
    return render(request, 'checkout-complete.html')

Ruby on Rails

RUBY
require 'net/http'
require 'json'

class CheckoutController < ApplicationController
  def complete
    click_token = params[:styrar_ck] || cookies[:styrar_ck]
    if click_token
      begin
        uri = URI('https://api.styrar.com/v1/pixel/track')
        Net::HTTP.post(uri, { clickToken: click_token, eventName: 'purchase', value: @order_total }.to_json,
                        'Content-Type' => 'application/json')
      rescue StandardError
        nil
      end
    end
  end
end

Tout autre backend

Le point de terminaison est en HTTP/JSON simple sans authentification, donc cela fonctionne depuis n'importe quel langage capable de faire une requête HTTP :

Shell
curl -X POST https://api.styrar.com/v1/pixel/track \
  -H 'Content-Type: application/json' \
  -d '{"clickToken":"<styrar_ck value>","eventName":"purchase","value":49.99}'

Encapsulez l'appel pour qu'un échec de suivi ne puisse jamais casser le flux auquel il est rattaché — le point de terminaison renvoie toujours 200 { "ok": true }, mais vous devriez quand même intercepter les erreurs réseau de votre côté.

Liens utiles

Join the beta waitlist

By signing up you agree to receive marketing email. See our Privacy Policy.