Özel alanlar
Özel alanı bir kez tanımlayın, aynı anahtarı API'de custom_fields ve widget'ta setAttributes ile gönderin; tip doğrulama, liste alanları ve widget erişimi.
Özel alanı Ayarlar → Özel alanlar altında bir kez tanımlarsınız; tanımlamak tek adımdır. Alanın anahtarı neyse, hem API'de custom_fields içinde hem widget'ta setAttributes / identify({ attributes }) içinde o anahtarı gönderirsiniz. Değer alanın tipine göre doğrulanır; liste alanlarında seçeneğin kimliği ya da etiketi kabul edilir ve kimlik saklanır. Alanın widget erişimi anonim ziyaretçinin yazıp yazamayacağını belirler (varsayılan: yalnız doğrulanmış kullanıcı). Tanımsız bir anahtar yok sayılmaz: panelde tanımsız alan uyarısı olarak listelenir ve alanı tanımladığınızda kişiye işlenir. Kişi henüz yoksa widget sonucu pending: true döner ve değerler ilk mesajla gider.
// Adım 3: özel alanlar. Anahtar panelde tanımlı alanın anahtarıdır; tanımsız
// anahtar "tanımsız alan" uyarısı olarak kalır ve alanı tanımlayınca işlenir.
// @ts-check
ClickFix("setAttributes", {
plan: "pro",
seats: 12,
renewal_date: "2027-01-31",
});
ClickFix("on", "attributes", ({ applied, ignored, pending }) => {
console.log({ applied, ignored, pending }); // pending: ilk mesajla gönderilecek
});// Adım 3: özel alanlar. Alanı panelde tanımlayın (Ayarlar > Özel alanlar);
// anahtarı neyse custom_fields içinde o anahtarla gönderin.
import { createClient } from "@getclickfix/node";
const client = createClient({
baseURL: process.env.CLICKFIX_BASE_URL!,
apiKey: process.env.CLICKFIX_API_KEY!,
});
const contact = await client.request(
"/v1/public-api/contacts/by-external-id",
"put",
{
external_id: "1001",
// Liste alanlarında seçeneğin kimliği ya da etiketi kabul edilir.
custom_fields: { plan: "pro", seats: 12, renewal_date: "2027-01-31" },
},
{ idempotencyKey: `user-1001-fields-${Date.now()}` },
);
console.log(JSON.stringify(contact.data));package main
import (
"context"
"encoding/json"
"fmt"
"os"
"time"
clickfix "github.com/ClickSolveMainTR/clickfix-sdks/go"
)
// Adım 3: özel alanlar; anahtar panelde tanımladığınız alanın anahtarıdır.
func customFields(ctx context.Context) error {
client, err := clickfix.New(os.Getenv("CLICKFIX_BASE_URL"), os.Getenv("CLICKFIX_API_KEY"))
if err != nil {
return err
}
fields := map[string]any{"plan": "pro", "seats": 12, "renewal_date": "2027-01-31"}
res, err := client.PutV1PublicApiContactByExternalIdWithResponse(ctx,
&clickfix.PutV1PublicApiContactByExternalIdParams{IdempotencyKey: fmt.Sprintf("user-1001-fields-%d", time.Now().UnixNano())},
clickfix.PutV1PublicApiContactByExternalIdJSONRequestBody{ExternalId: "1001", CustomFields: &fields})
if err != nil {
return err
}
if res.StatusCode() != 200 && res.StatusCode() != 201 {
return fmt.Errorf("clickfix: HTTP %d", res.StatusCode())
}
return json.NewEncoder(os.Stdout).Encode(map[string]int{"status": res.StatusCode()})
}<?php
// Adım 3: özel alanlar. Alanı panelde tanımlayın (Ayarlar > Özel alanlar);
// anahtarı neyse custom_fields içinde o anahtarla gönderin.
require __DIR__.'/vendor/autoload.php';
use ClickFix\Client;
$client = new Client(getenv('CLICKFIX_BASE_URL'), getenv('CLICKFIX_API_KEY'));
// Liste alanlarında seçeneğin kimliği ya da etiketi kabul edilir.
$contact = $client->customFields()->setForContact(
'1001',
['plan' => 'pro', 'seats' => 12, 'renewal_date' => '2027-01-31'],
idempotencyKey: 'user-1001-fields-'.(int) (microtime(true) * 1000),
);
echo json_encode($contact), PHP_EOL;# Adım 3: özel alanlar; anahtar panelde tanımlı alanın anahtarıdır.
curl -sS --fail-with-body -X PUT "$CLICKFIX_BASE_URL/v1/public-api/contacts/by-external-id" \
-H "Authorization: Bearer $CLICKFIX_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: user-1001-fields-$(date +%s)" \
-d '{ "external_id": "1001", "custom_fields": { "plan": "pro", "seats": 12, "renewal_date": "2027-01-31" } }'Son güncelleme
Kişiler, firmalar ve dış kimlik
Kendi sisteminizdeki kullanıcı ve firma numaralarını dış kimlik olarak eşleyin; kişiyi dış kimlikle oluşturun veya güncelleyin, firmayı bağlayın, kullanım ve gelir sinyali gönderin.
Olaylar ve ekran bağlamı
Widget'ın ekran bağlamı (track) ve API'nin ürün olayları (company-events): hangi ekrandan yazdı, şirket zaman çizelgesi, idempotency.