Μετάβαση στο κύριο περιεχόμενο

Διαχείριση συνδρομών

Αυτό το έγγραφο περιγράφει το ολοκληρωμένο σύστημα διαχείρισης συνδρομών και συγκατάθεσης του Joryio, το οποίο χειρίζεται συνδρομές ανά κανάλι, συνδρομές βάσει λίστας/θέματος, κεφαλίδες RFC 8058 List-Unsubscribe, χειρισμό bounces και δυνατότητες συμμόρφωσης.

Περιεχόμενα​

  1. Επισκόπηση
  2. Μοντέλα δεδομένων
  3. Συνδρομές καναλιού
  4. Ενσωμάτωση Web SDK
  5. Λίστες συνδρομών
  6. Double opt-in
  7. Ομάδες συνδρομών ανά αριθμό (SMS και WhatsApp)
  8. Κεφαλίδα List-Unsubscribe (RFC 8058)
  9. Φιλοξενούμενη σελίδα προτιμήσεων και διαγραφή
  10. Σελίδα προτιμήσεων (προσαρμοσμένο design)
  11. Χειρισμός Bounce
  12. Μεταβλητές Liquid template
  13. Φίλτρα τμημάτων
  14. Αναφορά API
  15. Ρύθμιση
  16. Συμμόρφωση

Επισκόπηση​

Το σύστημα διαχείρισης συνδρομών του Joryio παρέχει:

  • Συνδρομές ανά κανάλι: Παρακολούθηση κατάστασης opt-in/opt-out για email, SMS, WhatsApp, push notifications και Viber
  • Συνδρομές βάσει λίστας: Επιτρέψτε στους χρήστες να εγγράφονται σε συγκεκριμένα θέματα ή λίστες αποστολής
  • Συμμόρφωση RFC 8058: Κεφαλίδες διαγραφής με ένα κλικ για βελτιωμένη παραδοσιμότητα email
  • Χειρισμό bounce: Αυτόματος χειρισμός soft και hard bounces
  • Audit logging: Πλήρες ιστορικό αλλαγών συνδρομής για συμμόρφωση
  • Φιλτράρισμα τμημάτων: Στόχευση χρηστών βάσει κατάστασης συνδρομής

Μοντέλα δεδομένων​

Συνδρομή καναλιού (ανά χρήστη)​

Κάθε χρήστης έχει κατάσταση συνδρομής για κάθε κανάλι επικοινωνίας:

interface ChannelSubscription {
status: 'optedIn' | 'subscribed' | 'unsubscribed';
optInDate?: Date;
optOutDate?: Date;
optInSource?: string; // 'api', 'web_form', 'import', 'manual'
consentText?: string; // Consent text shown at opt-in
}

interface EmailSubscription extends ChannelSubscription {
bounceType?: 'soft' | 'hard' | null;
bounceCount?: number;
lastBounceAt?: Date;
isValid?: boolean; // false if hard bounced
}

interface UserSubscriptions {
email?: EmailSubscription;
sms?: ChannelSubscription;
whatsapp?: ChannelSubscription;
push?: ChannelSubscription;
viber?: ChannelSubscription;
}

Λίστα συνδρομών​

Οι λίστες είναι θέματα ή κατηγορίες στις οποίες μπορούν να εγγραφούν χρήστες:

interface SubscriptionList {
id: string;
organizationId: string;
workspaceId: string;
name: string;
description?: string;
channels: ('email' | 'sms' | 'whatsapp' | 'push' | 'viber')[];
isPublic: boolean; // Show in preference center
type: 'marketing' | 'transactional';
requireDoubleOptIn: boolean;
archivedAt?: Date;
createdAt: Date;
updatedAt: Date;
}

Μέλος λίστας​

Παρακολουθεί σε ποιες λίστες είναι εγγεγραμμένοι οι χρήστες:

interface ListSubscription {
contactId: string;
listId: string;
channel: 'email' | 'sms' | 'whatsapp' | 'push' | 'viber';
status: 'optedIn' | 'subscribed' | 'unsubscribed';
subscribedAt?: Date;
unsubscribedAt?: Date;
optInSource?: string;
}

Συνδρομές καναλιού​

Τύποι κατάστασης​

ΚατάστασηΠεριγραφή
optedInΟ χρήστης ολοκλήρωσε επιβεβαίωση double opt-in
subscribedΟ χρήστης είναι εγγεγραμμένος (single opt-in)
unsubscribedΟ χρήστης έχει διαγραφεί
pendingΑναμένει επιβεβαίωση: ζήτησε εγγραφή αλλά δεν έχει επιβεβαιώσει ακόμη το double opt-in. Δεν λαμβάνει μηνύματα μέχρι να επιβεβαιώσει· η επιβεβαίωση το κάνει subscribed. Ορίζεται από ροή επιβεβαίωσης (π.χ. double opt-in της Delivyr), ποτέ από τα SDK.

Ενημέρωση κατάστασης καναλιού​

// Via API
await subscriptionsApi.updateChannelSubscription(userId, 'email', {
status: 'unsubscribed',
source: 'preference_center',
reason: 'User requested via preference center'
});

Το συμβάν εγγραφής​

Κάθε φορά που ένα άτομο εγγράφεται, το Joryio καταγράφει το συμβάν πλατφόρμας message.subscribed - το αντίστοιχο του message.unsubscribed. Χρησιμοποιήστε το ως έναυσμα ταξιδιού (για παράδειγμα σειρά καλωσορίσματος μετά από εγγραφή στο newsletter) ή σε ένα τμήμα ("εκτέλεσε message.subscribed τις τελευταίες 7 ημέρες").

  • Μία φορά ανά πραγματική αλλαγή. Καταγράφεται όταν ένα κανάλι ή μια λίστα περνά από καμία κατάσταση, unsubscribed ή pending σε subscribed / optedIn. Η εκ νέου αποθήκευση της ίδιας συναίνεσης, ή μια επαφή που είναι ήδη εγγεγραμμένη, δεν καταγράφει τίποτα. Με διπλή επιβεβαίωση (double opt-in) καταγράφεται όταν το άτομο επιβεβαιώνει, όχι όταν του ζητείται.
  • Ιδιότητες: channel, scope (channel / list), listId, source, platform, optInSource, status, previousStatus, resubscribe. Το listId υπάρχει για λίστα· το platform ονομάζει το κατάστημα σε εγγραφή από κατάστημα· το resubscribe είναι true μετά από προηγούμενη διαγραφή.
  • source - πώς έγινε: store_newsletter, store_checkout, store_registration, store_customer_record, landing_page_form, in_app_form, website_form, api, dashboard, sdk, preference_center, double_opt_in, keyword, push_permission, journey. keyword είναι απάντηση START, push_permission το πρώτο push token, journey ένα βήμα Ενημέρωσης χρήστη, double_opt_in μια επιβεβαιωμένη εκκρεμής εγγραφή.
  • Δεν καταγράφεται για ιστορικά δεδομένα. Οι εισαγωγές επαφών, οι συγχρονισμοί αποθήκης δεδομένων, οι μαζικές προσθήκες σε λίστα και ο αρχικός συγχρονισμός ή η προγραμματισμένη συμφωνία ενός καταστήματος γράφουν την κατάσταση συνδρομής αλλά όχι συμβάν: αυτά τα άτομα ήταν ήδη εγγεγραμμένα, δεν εγγράφηκαν μόλις τώρα, και μια μεγάλη εισαγωγή δεν πρέπει να ξεκινά χιλιάδες ταξίδια καλωσορίσματος. Τα ζωντανά σήματα καταστήματος - εγγραφή στο newsletter, κουτάκι στο checkout, ενημέρωση πελάτη - καταγράφονται.
  • Οι κανόνες συναίνεσης δεν αλλάζουν. Μια επανεγγραφή ισχύει μόνο για τη συγκεκριμένη επαφή, και μια καταγγελία ή σκληρή επιστροφή αίρεται μόνο από το προσωπικό του Joryio - μια επανεγγραφή που απορρίφθηκε δεν καταγράφει τίποτα. Όπως κάθε συμβάν, ανήκει σε έναν χώρο εργασίας.

Το συμβάν διαγραφής. Το message.unsubscribed καταγράφει κάθε διαγραφή: σύνδεσμο ή κεφαλίδα διαγραφής, τη σελίδα προτιμήσεων, μια απάντηση STOP και - από 2026-11-02 - ένα μέλος της ομάδας στον πίνακα ελέγχου (unsubscribeSource admin), το API (api), το SDK (sdk) και μια διαγραφή από κατάστημα (store_sync). Είναι καταγραφή της διαγραφής για τμήματα, συνθήκες και Data Streaming· ένα ταξίδι δεν ξεκινά από αυτό.

Βέλτιστες πρακτικές​

  • Καταγράφετε πάντα την πηγή των αλλαγών συνδρομής
  • Αποθηκεύετε το κείμενο συγκατάθεσης όταν οι χρήστες επιλέγουν opt-in
  • Για συμμόρφωση με GDPR, χρησιμοποιήστε double opt-in για Ευρωπαίους χρήστες

Ενσωμάτωση Web SDK​

Το Joryio Web SDK σάς επιτρέπει να διαχειρίζεστε προτιμήσεις συνδρομής χρηστών απευθείας από τον ιστότοπο ή τη web εφαρμογή σας.

Εγκατάσταση​

<!-- Via script tag (served from the Joryio API) -->
<script src="https://sdk.joryio.com/web/1/joryio.min.js"></script>

<!-- Or via npm -->
npm install @joryio/web-sdk

Τύποι κατάστασης συνδρομής​

Το SDK παρέχει τρεις τιμές κατάστασης συνδρομής:

ΚατάστασηΠεριγραφή
SubscriptionStatus.OPTED_INΟ χρήστης επέλεξε ρητά opt-in (π.χ. επιβεβαίωσε double opt-in)
SubscriptionStatus.SUBSCRIBEDΟ χρήστης είναι εγγεγραμμένος αλλά δεν έχει επιλέξει ρητά opt-in
SubscriptionStatus.UNSUBSCRIBEDΟ χρήστης έχει επιλέξει opt-out

Ορισμός συνδρομών καναλιού​

import { JoryioSDK, SubscriptionStatus } from '@joryio/web-sdk';

// Initialize SDK
const sdk = new JoryioSDK({ sdkKey: 'jry_sdk_web_...' });

// Set subscription for a single channel (write-only for security - no getters)
sdk.user.setSubscription('email', SubscriptionStatus.OPTED_IN);
sdk.user.setSubscription('sms', SubscriptionStatus.SUBSCRIBED);
sdk.user.setSubscription('push', SubscriptionStatus.UNSUBSCRIBED);
sdk.user.setSubscription('whatsapp', SubscriptionStatus.SUBSCRIBED);

// Set multiple channels at once
sdk.user.setSubscriptions({
email: SubscriptionStatus.OPTED_IN,
sms: SubscriptionStatus.UNSUBSCRIBED,
whatsapp: SubscriptionStatus.SUBSCRIBED,
push: SubscriptionStatus.OPTED_IN
});

Διαχείριση ομάδων συνδρομών (λίστες)​

// Add user to a subscription group/list
sdk.user.addToSubscriptionGroup('newsletter-list-id', 'email');
sdk.user.addToSubscriptionGroup('product-updates-id', 'push');

// Remove user from a subscription group/list
sdk.user.removeFromSubscriptionGroup('newsletter-list-id', 'email');

// The channel parameter is optional, defaults to 'email'
sdk.user.addToSubscriptionGroup('weekly-digest-id');

Σημειώσεις ασφάλειας​

Το αντικείμενο User του SDK είναι μόνο για εγγραφή για λόγους ασφάλειας:

  • Δεν υπάρχει μέθοδος getSubscriptions() - αποτρέπει άλλους ιστότοπους/scripts από την ανάγνωση δεδομένων συνδρομής χρήστη
  • Δεν υπάρχουν getter methods - όλες οι ενέργειες είναι μονόδρομες εγγραφές στο backend
  • Έλεγχος ταυτότητας με κλειδί SDK - όλα τα αιτήματα ελέγχονται με το κλειδί SDK σας
  • Το SDK ενεργεί πάντα ως "ο τρέχων χρήστης" - τα setSubscription / addToSubscriptionGroup δεν δέχονται id στόχου· εφαρμόζονται σε όποιον είναι ταυτοποιημένο το SDK εκείνη τη στιγμή (το id ενός ανώνυμου επισκέπτη, ή τον χρήστη που περάσατε στο identify()). Δεν υπάρχει τρόπος ένας επισκέπτης να αλλάξει τις συνδρομές κάποιου άλλου μέσω του SDK.
  • Με ενεργοποιημένο το SDK Authentication, μια αλλαγή συνδρομής που αναφέρει χρήστη πρέπει να φέρει το token του χρήστη αυτού. Η αλλαγή ενός ανώνυμου επισκέπτη για τον εαυτό του γίνεται δεκτή - δεν έχει token να δείξει - αλλά ένα anonymousId που ανήκει ήδη σε ταυτοποιημένο χρήστη απορρίπτεται, ώστε η συγκατάθεση ενός ατόμου να μην αλλάζει μέσω παλιού αναγνωριστικού άλλου. Με ενεργό το Strict SDK identity, απορρίπτονται και οι ανώνυμες αλλαγές συνδρομής - καλέστε πρώτα identify(userId). Η εξαίρεση είναι η απεγγραφή, που γίνεται πάντα δεκτή (παρακάτω).
  • Οι απεγγραφές παραδίδονται πάντα. Ένα unsubscribed σε κανάλι και μια απεγγραφή από ομάδα γίνονται δεκτά για οποιονδήποτε για λογαριασμό του οποίου ενεργεί το SDK - ανώνυμο επισκέπτη, άτομο που έχει εξαιρεθεί από την παρακολούθηση ή έχει αρνηθεί τη συγκατάθεση παρακολούθησης, και υπό Strict SDK identity. Τα SDK τις κρατούν στην ουρά και τις ξαναστέλνουν και μετά από optOut(), άρνηση συγκατάθεσης και wipeData()· όλα τα άλλα (εγγραφή, χαρακτηριστικά, συμβάντα) σταματούν. Ο μόνος κανόνας που εξακολουθεί να ισχύει: με SDK Authentication, ένα anonymousId που ανήκει σε ταυτοποιημένο χρήστη δεν μπορεί να αλλάξει τη συγκατάθεση αυτού του χρήστη χωρίς το token του. Λεπτομέρειες: Οι ανακλήσεις παραδίδονται πάντα. Γίνονται δεκτές ακόμη και όταν η λήψη συμβάντων του λογαριασμού είναι σε παύση λόγω χρέωσης.
  • Οι πρώτες εγγραφές είναι ανοιχτές· η επανεγγραφή κάποιου που διαγράφηκε όχι. Όπως σε κάθε SDK στην πλευρά του πελάτη, το κλειδί είναι δημόσιο, οπότε χωρίς SDK Authentication ένα userId είναι μόνο ισχυρισμός. Μια πρώτη εγγραφή (κανάλι ή λίστα από την οποία το πρόσωπο δεν έχει διαγραφεί ποτέ) γίνεται δεκτή για κάθε χρήστη. Η επανεγγραφή ενός προσώπου που διαγράφηκε ρητά - δική του διαγραφή ή διαγραφή από λίστα, απάντηση STOP, ή διαγραφή στο email ή στο τηλέφωνό του από άλλη επαφή - γίνεται δεκτή μόνο για χρήστη επαληθευμένο με SDK Authentication ή για το δικό του ανώνυμο προφίλ του επισκέπτη· αλλιώς το αίτημα παίρνει 403 με code: "verified_identity_required" (κάντε την επανεγγραφή από τον server σας με το API). Ένα anonymousId που ανήκει σε ταυτοποιημένο πρόσωπο μετράει όπως ένα μη επαληθευμένο userId: η πρώτη εγγραφή αυτού του προσώπου γίνεται δεκτή, η επανεγγραφή μετά από διαγραφή όχι. Σύσταση: ενεργοποιήστε το διπλό opt-in για λίστες που τροφοδοτούνται από δημόσιες φόρμες ή εφαρμογές - μια εγγραφή μέσω SDK σε τέτοια λίστα στέλνει το email επιβεβαίωσης αντί να εγγράψει.
  • Οι συνδρομές ακολουθούν το άτομο κατά τη σύνδεση. Όταν ένας ανώνυμος επισκέπτης ταυτοποιείται και το ανώνυμο προφίλ του συγχωνεύεται σε υπάρχον προφίλ, μεταφέρονται τόσο οι συνδρομές καναλιών όσο και οι συμμετοχές σε λίστες. Όπου τα δύο προφίλ διαφωνούν, υπερισχύει μια απεγγραφή από οποιαδήποτε πλευρά. Μια συγχώνευση δεν σβήνει ποτέ μια κατάσταση που έχει ήδη το προφίλ που παραμένει· μια κατάσταση που μεταφέρει (μια διαγραφή) γράφεται στο ιστορικό συνδρομών αυτού του προφίλ με πηγή identity_merge.

Υποστήριξη TypeScript​

import {
JoryioSDK,
SubscriptionStatus,
SubscriptionChannel,
SubscriptionPreferences
} from '@joryio/web-sdk';

const sdk = new JoryioSDK({ sdkKey: 'jry_sdk_web_...' });

// Type-safe subscription updates
const preferences: SubscriptionPreferences = {
email: SubscriptionStatus.OPTED_IN,
sms: SubscriptionStatus.UNSUBSCRIBED,
};

sdk.user.setSubscriptions(preferences);

// Type-safe channel selection
const channel: SubscriptionChannel = 'email';
sdk.user.setSubscription(channel, SubscriptionStatus.OPTED_IN);

Παράδειγμα: Σελίδα ρυθμίσεων προτιμήσεων​

// On your settings page
function handleSubscriptionToggle(channel, isEnabled) {
sdk.user.setSubscription(
channel,
isEnabled ? SubscriptionStatus.SUBSCRIBED : SubscriptionStatus.UNSUBSCRIBED
);
}

// Usage
handleSubscriptionToggle('email', true); // Subscribe to email
handleSubscriptionToggle('sms', false); // Unsubscribe from SMS

Παράδειγμα: Εγγραφή σε newsletter​

function subscribeToNewsletter(email) {
// First identify the user
sdk.identify(email);
sdk.setAttributes({ email: email });

// Then subscribe to the newsletter list
sdk.user.setSubscription('email', SubscriptionStatus.OPTED_IN);
sdk.user.addToSubscriptionGroup('newsletter-list-id', 'email');
}

Λίστες συνδρομών​

Δημιουργία λίστας​

const list = await listsApi.create({
name: 'Weekly Newsletter',
description: 'Our weekly digest of product updates',
channels: ['email'],
isPublic: true, // Show in preference center
type: 'marketing',
requireDoubleOptIn: false
});

Διαχείριση μελών​

// Subscribe a user to a list
await subscriptionsApi.subscribeToList(userId, listId, 'email', {
source: 'api',
consentText: 'Weekly newsletter signup'
});

// Unsubscribe a user
await subscriptionsApi.unsubscribeFromList(userId, listId, 'email');

// Bulk operations (never re-subscribe contacts who opted out)
await listsApi.bulkAddMembers(listId, contactIds, 'email');
await listsApi.bulkRemoveMembers(listId, contactIds, 'email');

Δημόσιες και ιδιωτικές λίστες​

  • Δημόσιες λίστες (isPublic: true): Εμφανίζονται στο preference center και οι χρήστες μπορούν να τις διαχειριστούν οι ίδιοι
  • Ιδιωτικές λίστες (isPublic: false): Διαχειρίζονται μόνο από admins και δεν εμφανίζονται στους χρήστες

Double opt-in​

Το double opt-in προσθέτει ένα βήμα επιβεβαίωσης σε μια λίστα: το άτομο συμπληρώνει μια φόρμα, λαμβάνει ένα email με έναν υπογεγραμμένο σύνδεσμο και προστίθεται στη λίστα μόνο αφού τον πατήσει. Ισχύει για λίστες στις οποίες εγγράφεται κανείς μέσω φόρμας landing page ή φόρμας σε in-app μήνυμα· μια συνδρομή που γράφεται μέσω API ή μαζικής εισαγωγής προστίθεται απευθείας.

Η προεπιλογή του workspace​

Το Settings > Subscriptions > Double opt-in έχει δύο ρυθμίσεις:

  • Ενεργοποίηση double opt-in από προεπιλογή για νέες λίστες - απενεργοποιημένο από προεπιλογή. Είναι προεπιλογή για νέες λίστες, όχι πολιτική: μια λίστα που δημιουργείται όσο είναι ενεργό ξεκινά με επιλεγμένο το "Απαιτείται double opt-in", και η αλλαγή του διακόπτη αργότερα δεν αγγίζει τις υπάρχουσες λίστες.
  • Template email επιβεβαίωσης - "Ενσωματωμένο email επιβεβαίωσης" ή ένα από τα email templates του workspace (δείτε παρακάτω).

Η παράκαμψη ανά λίστα​

Κάθε λίστα έχει το δικό της πλαίσιο επιλογής Απαιτείται double opt-in (Subscriptions > Lists, στο παράθυρο δημιουργίας και επεξεργασίας· ο πίνακας λιστών το εμφανίζει ως "Απαιτείται" ή "Προαιρετικό"). Υπερισχύει πάντα της προεπιλογής του workspace - μια ρητή επιλογή στη λίστα δεν αντικαθίσταται ποτέ από τη ρύθμιση. Μέσω API το πεδίο είναι requireDoubleOptIn· παραλείψτε το από το αίτημα δημιουργίας για να πάρετε την προεπιλογή του workspace, ή περάστε true / false για να αποφασίσετε για τη συγκεκριμένη λίστα.

Πώς μοιάζει μια εκκρεμής συνδρομή​

Όταν μια υποβολή φόρμας αναφέρει λίστα που απαιτεί επιβεβαίωση:

  • Το προφίλ του ατόμου δημιουργείται ή ενημερώνεται με τις τιμές της φόρμας ως συνήθως, αλλά η συμμετοχή στη λίστα δεν γράφεται - τίποτα δεν αποθηκεύεται για τη λίστα μέχρι να πατήσει τον σύνδεσμο. Δεν υπάρχει εγγραφή μέλους "σε εκκρεμότητα" για να βρείτε στη λίστα.
  • Στο μήνυμα ευχαριστίας της φόρμας προστίθεται το "Ελέγξτε τα εισερχόμενά σας για να επιβεβαιώσετε την εγγραφή." στη γλώσσα της σελίδας.
  • Το event υποβολής φόρμας φέρει listsSubscribed (λίστες στις οποίες έγινε άμεση εγγραφή) και listsPending (λίστες που περιμένουν επιβεβαίωση), ώστε ένα journey να τα ξεχωρίζει.
  • Ένα email επιβεβαίωσης στέλνεται για όλες τις εκκρεμείς λίστες μαζί, ως transactional email μέσω των ρυθμίσεων email του ίδιου του workspace. Το ίδιο άτομο που ζητά τις ίδιες λίστες ξανά μέσα στην ίδια ώρα δεν λαμβάνει δεύτερο email.
  • Ο σύνδεσμος ισχύει για 7 ημέρες. Το πάτημά του εγγράφει το άτομο σε κάθε λίστα που αναφέρει ο σύνδεσμος με πηγή double_opt_in και εμφανίζει μια μικρή σελίδα επιβεβαίωσης στη γλώσσα της φόρμας. Ένας ληγμένος ή αλλοιωμένος σύνδεσμος εμφανίζει το "Αυτός ο σύνδεσμος επιβεβαίωσης δεν ισχύει πια. Συμπληρώστε ξανά τη φόρμα για έναν νέο."

Το email επιβεβαίωσης​

Χωρίς επιλεγμένο template, το Joryio στέλνει το ενσωματωμένο email επιβεβαίωσης στη γλώσσα της σελίδας (Αγγλικά, Εβραϊκά, Ισπανικά, Ελληνικά ή Αραβικά· οτιδήποτε άλλο πέφτει στα Αγγλικά): θέμα "Επιβεβαιώστε την εγγραφή σας", τα ονόματα των λιστών, ένα κουμπί "Επιβεβαίωση εγγραφής" και μια γραμμή που λέει στον παραλήπτη να αγνοήσει το email αν δεν ήταν αυτός.

Για να χρησιμοποιήσετε δικό σας design, επιλέξτε ένα από τα email templates σας ως Template email επιβεβαίωσης. Αποδίδεται με αυτές τις μεταβλητές:

ΜεταβλητήΤιμή
{{ confirm_url }}Ο υπογεγραμμένος σύνδεσμος επιβεβαίωσης. Απαιτείται - ένα template που δεν αναφέρει το confirm_url δεν χρησιμοποιείται και στέλνεται αντ' αυτού το ενσωματωμένο email, γιατί ένα email επιβεβαίωσης χωρίς τον σύνδεσμό του δεν μπορεί ποτέ να επιβεβαιωθεί.
{{ list_names }}Τα ονόματα των εκκρεμών λιστών, χωρισμένα με κόμμα ("Weekly Newsletter, Product Updates").
{{ lists }}Οι εκκρεμείς λίστες ως αντικείμενα με id και name, για βρόχο.
{{ brand }}Το όνομα του workspace (ή "us" όταν δεν έχει).
{{ language }}Ο κωδικός γλώσσας της σελίδας της φόρμας, π.χ. en.

Το θέμα του template αποδίδεται με τις ίδιες μεταβλητές· ένα template χωρίς θέμα χρησιμοποιεί το ενσωματωμένο. Το template παραλείπεται επίσης, με προειδοποίηση στα logs, όταν δεν υπάρχει πια ή αποτυγχάνει να αποδοθεί - το άτομο λαμβάνει και πάλι το ενσωματωμένο email. Οι μεταβλητές ατόμου ({{ user.first_name }} και οι υπόλοιπες) είναι διαθέσιμες όπως σε κάθε transactional email.

<p>You asked to receive updates from {{ brand }}:</p>
<ul>
{% for list in lists %}
<li>{{ list.name }}</li>
{% endfor %}
</ul>
<p><a href="{{ confirm_url }}">Confirm subscription</a></p>
<p>If this was not you, ignore this email and nothing changes.</p>

Double opt-in για SMS​

Το double opt-in για SMS ζητά από κάθε νέο συνδρομητή SMS να επιβεβαιώσει από το δικό του τηλέφωνο πριν λάβει οποιοδήποτε διαφημιστικό μήνυμα. Λειτουργεί με κάθε πάροχο SMS και είναι απενεργοποιημένο από προεπιλογή.

Ενεργοποίηση​

Ρυθμίσεις > Συνδρομές > Double opt-in για SMS:

  • Απαιτείται επιβεβαίωση από νέους συνδρομητές SMS - ενεργό ή ανενεργό για τον χώρο εργασίας.
  • Όνομα brand - αντικαθιστά το {{brand}} στα μηνύματα. Κενό = το όνομα του χώρου εργασίας.
  • Μήνυμα επιβεβαίωσης - προεπιλογή: {{brand}}: Reply YES to receive texts. Msg & data rates may apply. Reply STOP to opt out. Η αποθήκευση απορρίπτεται αν το μήνυμα δεν αναφέρει το brand ({{brand}} ή το όνομα του brand), δεν ζητά απάντηση YES (ή άλλη λέξη εγγραφής από τη λίστα λέξεων-κλειδιών, όπως START, SI ή ΝΑΙ) και δεν εξηγεί πώς γίνεται η διαγραφή (STOP ή άλλη λέξη διαγραφής). Έως 320 χαρακτήρες.
  • Απάντηση μετά την επιβεβαίωση - ενεργή από προεπιλογή: {{brand}}: You're subscribed to texts. Msg & data rates may apply. Reply STOP to opt out. Πρέπει κι αυτή να αναφέρει το brand και τη διαγραφή.
  • Λήξη μετά από - ημέρες που ένα αίτημα μένει ανοιχτό, 1-30, προεπιλογή 7.
  • Αποστολή μίας υπενθύμισης - ανενεργή από προεπιλογή· όταν ενεργοποιηθεί, μία υπενθύμιση (το ίδιο μήνυμα επιβεβαίωσης) μετά τις ώρες που ορίζετε, πριν λήξει το αίτημα.

Τι γίνεται με έναν νέο συνδρομητή SMS​

Με τη ρύθμιση ενεργή, μια νέα εγγραφή SMS από οποιαδήποτε πηγή που δεν είναι η επιβεβαίωση της ίδιας της επαφής - φόρμα ή landing page, το API, τα SDK, συγχρονισμός καταστήματος, εισαγωγή επαφών ή συγχρονισμός αποθήκης δεδομένων - αποθηκεύεται ως Σε αναμονή επιβεβαίωσης (pending) αντί για εγγεγραμμένη, και η επαφή λαμβάνει ένα μήνυμα επιβεβαίωσης:

  • Στέλνεται από τον προεπιλεγμένο αριθμό SMS του χώρου εργασίας - τον αριθμό από τον οποίο θα λάμβανε μηνύματα η επαφή - μέσω της κανονικής διαδρομής SMS, ως μήνυμα συστήματος: δεν είναι καμπάνια, χρεώνεται όπως κάθε SMS και εμφανίζεται στα αρχεία SMS. Δεν στέλνεται ποτέ σε αριθμό που έκανε διαγραφή (STOP) και τηρεί τις ώρες ησυχίας όπως ένα συναλλακτικό μήνυμα (αποφασίζει η ρύθμιση "εξαίρεση για συναλλακτικά")· μήνυμα που πέφτει σε παράθυρο ησυχίας περιμένει να τελειώσει.
  • Ένα αίτημα στέλνει ένα μήνυμα (συν την προαιρετική υπενθύμιση). Νέο αίτημα όσο η επαφή περιμένει ακόμη επιβεβαίωση δεν στέλνει δεύτερο.
  • Επαφή σε αναμονή επιβεβαίωσης δεν λαμβάνει SMS από καμπάνια ή journey, σε καμία λειτουργία κοινού.
  • Η σελίδα της επαφής δείχνει "Σε αναμονή επιβεβαίωσης" στην κάρτα SMS, με το πότε στάλθηκε το μήνυμα και πότε λήγει το αίτημα.

Επιβεβαίωση, άρνηση και λήξη​

  • Το YES (ή οποιαδήποτε λέξη εγγραφής από την κοινή λίστα λέξεων-κλειδιών - START, YES, SI, SÍ, OUI, JA, ΝΑΙ, نعم, כן και όσες προσθέσετε) από το τηλέφωνο της επαφής στον αριθμό σας την κάνει εγγεγραμμένη, με πηγή εγγραφής double_opt_in. Επιβεβαιώνονται μόνο επαφές σε αναμονή στον χώρο εργασίας στον οποίο ανήκει ο αριθμός που λαμβάνει το μήνυμα. Αν η "Απάντηση μετά την επιβεβαίωση" είναι ενεργή, λαμβάνουν την απάντηση μία φορά. Ένα YES από κάποιον που δεν είναι σε αναμονή ακολουθεί τους συνήθεις κανόνες του START.
  • Το STOP κατά την αναμονή την κάνει διαγραμμένη· δεν στέλνεται τίποτε άλλο.
  • Χωρίς απάντηση, το αίτημα λήγει μετά τις ημέρες που ορίσατε: η κατάσταση SMS γίνεται ξανά κενή (ποτέ "διαγραμμένη" - κανείς δεν έκανε διαγραφή) και το ιστορικό δείχνει "Η επιβεβαίωση έληξε". Ένας συγχρονισμός καταστήματος ή αποθήκης δεδομένων δεν ρωτά ξανά μετά από λήξη· μια νέα εγγραφή μέσω φόρμας, API ή SDK ρωτά.

Επαφές που έκαναν διαγραφή​

Με ενεργό το double opt-in για SMS, η επανεγγραφή μιας επαφής που έκανε διαγραφή - με STOP ή οποιαδήποτε άλλη διαγραφή SMS, μέσω του API, του πίνακα ελέγχου, του SDK ή εισαγωγής με Παράκαμψη διαγραφών - αντιμετωπίζεται ως νέα εγγραφή: η επαφή γίνεται Σε αναμονή επιβεβαίωσης και λαμβάνει ένα μήνυμα επιβεβαίωσης, και εγγράφεται μόνο αφού απαντήσει YES. Δεύτερο αίτημα όσο περιμένει δεν στέλνει τίποτα. Αν δεν απαντήσει, το αίτημα λήγει και η επαφή γίνεται ξανά διαγραμμένη· δεν στέλνεται τίποτε άλλο (καμία υπενθύμιση). Μια επαφή που είχε στείλει STOP εξακολουθεί να έχει τη συνήθη προειδοποίηση (στην απάντηση του API ως sms_stop_provider_block, στη σελίδα της επαφής και στη σύνοψη εισαγωγής): ο πάροχος SMS μπορεί να μπλοκάρει το μήνυμα επιβεβαίωσης μέχρι να στείλει START, και αν το απορρίψει με τον δικό του κωδικό STOP (για παράδειγμα Twilio 21610, Delivyr κωδικός 1) η επαφή γίνεται ξανά διαγραμμένη με τη σημείωση ιστορικού "provider still blocks: re-opted out". Οι εισαγωγές χωρίς το πλαίσιο παράκαμψης και οι συγχρονισμοί καταστήματος δεν επανεγγράφουν ποτέ επαφή που έκανε διαγραφή, οπότε δεν της στέλνεται μήνυμα.

Εισαγωγές​

Η σελίδα εισαγωγής αναφέρει πότε είναι ενεργό το double opt-in για SMS. Κάθε νέα εγγραφή SMS του αρχείου γίνεται τότε Σε αναμονή επιβεβαίωσης και λαμβάνει ένα μήνυμα επιβεβαίωσης (περίπου ένα λεπτό μετά την εισαγωγή). Με την Παράκαμψη διαγραφών, οι επαφές του αρχείου που έκαναν διαγραφή από τα SMS αντιμετωπίζονται με τον ίδιο τρόπο - ένα μήνυμα, εγγραφή μόνο μετά το YES, επιστροφή σε διαγραμμένες αν δεν απαντήσουν (δείτε παραπάνω)· χωρίς αυτήν μένουν διαγραμμένες και δεν λαμβάνουν μήνυμα. Επιλέξτε Έχει ήδη επιβεβαιωθεί (έχω απόδειξη) μόνο αν έχετε απόδειξη ότι τα άτομα του αρχείου έχουν ήδη επιβεβαιώσει την εγγραφή τους στα SMS· τότε αποθηκεύονται ως εγγεγραμμένα χωρίς μήνυμα. Και τα δύο πλαίσια απαιτούν το δικαίωμα συμμόρφωσης.

Λογαριασμοί Delivyr​

Το Delivyr έχει το δικό του double opt-in. Όταν ο αριθμός SMS του χώρου εργασίας είναι σε λογαριασμό Delivyr, το Joryio δεν στέλνει δεύτερη επιβεβαίωση: οι νέες εγγραφές SMS καταγράφονται κανονικά, και το Delivyr κρατά κάθε μήνυμα προς ανεπιβεβαίωτο αριθμό (λόγος αποτυχίας "Not confirmed yet") και ρωτά το ίδιο την επαφή μέχρι να απαντήσει YES εκεί. Επαφή που το Delivyr αναφέρει ως σε αναμονή επιβεβαίωσης επιβεβαιώνεται στο Joryio με το YES της μέσω του webhook του Delivyr.


Ομάδες συνδρομών ανά αριθμό (SMS και WhatsApp)​

Μια λίστα συνδρομών που συνδέεται με συγκεκριμένο αποστολέα - δηλαδή η λίστα φέρει senderId - λειτουργεί ως ομάδα συνδρομών ανά αριθμό. Για SMS, η ομάδα είναι ανά αριθμό· για WhatsApp, είναι ανά WABA (WhatsApp Business Account). Έτσι, μια επαφή μπορεί να επιλέξει opt-out από μηνύματα ενός αριθμού/WABA ενώ παραμένει εγγεγραμμένη σε άλλους.

Πώς περιορίζονται και αποθηκεύονται τα opt-outs​

  • Τα opt-outs αποθηκεύονται ανά ομάδα. Κάθε ομάδα ανά αριθμό παρακολουθεί τη δική της κατάσταση opt-out, ξεχωριστά από την καθολική συγκατάθεση καναλιού της επαφής και από άλλους αριθμούς/WABA.
  • Τόσο οι αποστολές καμπάνιας όσο και journey τηρούν τα opt-outs. Πριν από την αποστολή, το σύστημα ελέγχει την κατάσταση opt-out του παραλήπτη για την ομάδα του αριθμού αποστολής / WABA. Αν η επαφή έχει επιλέξει opt-out από αυτή την ομάδα, η αποστολή παραλείπεται. Σε journey η επαφή συνεχίζει στο επόμενο βήμα - παραλείπεται μόνο το μήνυμα, όχι το journey.
  • Προεπιλεγμένος αριθμός SMS. Όταν στέλνετε από τον προεπιλεγμένο αριθμό του workspace, τα opt-outs περιορίζονται στην ομάδα αυτού του προεπιλεγμένου αριθμού.

Περιορισμός εισερχόμενων STOP / START​

Όταν ένας παραλήπτης απαντά με keyword, αυτό εφαρμόζεται στον συγκεκριμένο αριθμό (SMS) / WABA (WhatsApp) στον οποίο έφτασε το μήνυμα:

  • Το STOP (και κάθε άλλο keyword opt-out εκτός από STOPALL) περιορίζεται στην ομάδα ανά αριθμό / ανά WABA - διαγράφει την επαφή μόνο από τα μηνύματα αυτού του αριθμού/WABA.
  • Το STOPALL ισχύει για όλο το κανάλι - διαγράφει την επαφή από κάθε αριθμό/WABA σε αυτό το κανάλι.
  • Το START επανεγγράφει την επαφή στην ίδια ομάδα αριθμού / WABA.
Μια εισερχόμενη διεύθυνση webhook είναι δεμένη σε έναν χώρο εργασίας

Οι χώροι εργασίας είναι ξεχωριστές μάρκες, οπότε ένα STOP απεγγράφει την επαφή από εκείνη τη μάρκα - όχι από ολόκληρο τον λογαριασμό. Αυτό το εύρος προκύπτει από την εισερχόμενη διεύθυνση webhook, η οποία φέρει έναν χώρο εργασίας.

Το Joryio δεν μπορεί να συμπεράνει τη μάρκα από το ίδιο το μήνυμα. Οι αποστολείς αναγνωρίζονται με όνομα (για παράδειγμα Acme), ενώ μια απάντηση φτάνει σε έναν αριθμό τηλεφώνου - δεν υπάρχει κοινό στοιχείο για αντιστοίχιση.

Έτσι, κάθε απάντηση και κάθε απεγγραφή που φτάνει σε μια δεδομένη εισερχόμενη διεύθυνση καταγράφεται στον χώρο εργασίας εκείνης της διεύθυνσης. Αν ένας λογαριασμός παρόχου εξυπηρετεί περισσότερες από μία μάρκες, ρυθμίστε ξεχωριστή εισερχόμενη διεύθυνση ανά αριθμό στην πύλη του παρόχου, ή δώστε σε κάθε μάρκα τον δικό της λογαριασμό παρόχου. Διαφορετικά, ένα STOP που προοριζόταν για τη Μάρκα Β καταγράφεται στη Μάρκα Α, και η Μάρκα Β συνεχίζει να στέλνει.

Keywords​

Ο χειρισμός εισερχόμενων SMS keywords βασίζεται σε τρία επίπεδα: ένα πάντα ενεργό αγγλικό σύνολο βάσης, τοπικοποιημένες προεπιλογές (ενεργές από προεπιλογή) και τις δικές σας προσαρμοσμένες προσθήκες. Όλα συγχωνεύονται κατά την αντιστοίχιση.

Αγγλικό σύνολο βάσης (πάντα ενεργό, δεν αφαιρείται)

Αυτά απαιτούνται για συμμόρφωση FCC / CTIA και δεν μπορούν ποτέ να απενεργοποιηθούν:

ΤύποςKeywords
Opt-outSTOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, REVOKE, OPTOUT, OPT OUT, OPT-OUT
Opt-inSTART, YES, UNSTOP, SUBSCRIBE, OPTIN
ΒοήθειαHELP, INFO
Βάση FCC Απριλίου 2025

Τα REVOKE και OPTOUT είναι μέρος του συνόλου βάσης opt-out (κανόνας FCC για ανάκληση συγκατάθεσης SMS του Απριλίου 2025). Τιμώνται πάντα - δεν χρειάζεται να τα προσθέσετε ή να τα ενεργοποιήσετε.

Εμβέλεια συνδέσμου διαγραφής σε κόμβους SMS και Viber (journey)​

Ένα βήμα μηνύματος SMS ή Viber σε ένα journey φέρει έναν σύνδεσμο διαγραφής του οποίου την εμβέλεια μπορείτε να επιλέξετε ανά κόμβο. Ο αποστολέας "Από" ορίζει τη λίστα συνδρομής, οπότε από προεπιλογή ο σύνδεσμος διαγραφής (και ένα εισερχόμενο STOP) αφαιρεί την επαφή μόνο από τη λίστα αυτού του αποστολέα - παραμένει προσβάσιμη από τους άλλους αποστολείς σας.

Στους κόμβους μηνύματος SMS και Viber, το στοιχείο ελέγχου "Ο σύνδεσμος διαγραφής αφαιρεί από:" προσφέρει:

ΕπιλογήΣυμπεριφορά
Η λίστα αυτού του αποστολέα (προεπιλογή)Ο σύνδεσμος διαγραφής κάνει opt-out την επαφή μόνο από τη λίστα του αποστέλλοντος αριθμού/αποστολέα - όπως ακριβώς η εμβέλεια ενός STOP που στέλνεται με μήνυμα.
Όλα τα SMS / Όλα τα Viber (καθολικό)Ο σύνδεσμος διαγραφής κάνει opt-out την επαφή από ολόκληρο το κανάλι - ισοδύναμο με STOPALL.

Η προεπιλογή (λίστα αποστολέα) είναι η λιγότερο απρόσμενη και πιο στοχευμένη επιλογή, και διατηρεί τον σύνδεσμο διαγραφής συνεπή με την εμβέλεια του εισερχόμενου STOP. Διευρύνετέ την σε καθολική μόνο όταν ένας κόμβος αντιπροσωπεύει πραγματικά μια διαγραφή σε επίπεδο καναλιού. Αυτό αντικατοπτρίζει το μοντέλο καθολικό-έναντι-λίστας της διαγραφής email (List-Unsubscribe) - το ίδιο μοντέλο, εφαρμοσμένο ανά κόμβο για SMS και Viber.


Τα email opt-outs ακολουθούν τη διεύθυνση (διπλές επαφές)​

Η ίδια διεύθυνση email μπορεί νόμιμα να ανήκει σε περισσότερες από μία επαφές σε ένα workspace - για παράδειγμα, ένα άτομο που εισήχθη δύο φορές ή δημιουργήθηκε από διαφορετικές πηγές. Οι διαγραφές email και τα hard bounces καταγράφονται στη διεύθυνση email (με εύρος workspace), όχι μόνο στην εγγραφή επαφής που έλαβε το μήνυμα. Αυτό αντιστοιχεί στον τρόπο με τον οποίο ώριμες πλατφόρμες engagement χειρίζονται τη συγκατάθεση email και σημαίνει ότι μια διαγραφή τιμάται για το άτομο, χωρίς να χάνεται επειδή μια διπλή εγγραφή φαινόταν ακόμη εγγεγραμμένη.

Τι σημαίνει αυτό​

  • Η διαγραφή καλύπτει κάθε διπλότυπο. Όταν κάποιος διαγράφεται - από σύνδεσμο διαγραφής, την κεφαλίδα one-click List-Unsubscribe, σελίδα προτιμήσεων ή αναφορά spam - όλες οι επαφές του workspace με το ίδιο email καταστέλλονται, όχι μόνο εκείνη που έλαβε το email.
  • Καθολικό έναντι λίστας. Η καθολική διαγραφή καταστέλλει τη διεύθυνση σε όλο το κανάλι (κάθε καμπάνια και journey). Η διαγραφή λίστας/θέματος καταστέλλει τη διεύθυνση μόνο για αυτή τη λίστα - το άτομο παραμένει προσβάσιμο σε άλλες λίστες.
  • Τα hard bounces ακολουθούν επίσης τη διεύθυνση. Ένα hard bounce καταστέλλει τη διεύθυνση σε όλο το workspace, ώστε μια διπλότυπη επαφή να μη συνεχίζει να στέλνει σε νεκρό mailbox. Δεν αίρεται με επανεγγραφή, με το API ή με εισαγωγή - μόνο από την υποστήριξη του Joryio (ή με πραγματική αλλαγή email). Δείτε Επαφές που μοιράζονται email ή τηλέφωνο.
  • Εύρος workspace. Η καταστολή συνδέεται με το workspace που έστειλε στη διεύθυνση. Μια διαγραφή σε ένα workspace δεν σιωπά τη διεύθυνση σε διαφορετικό workspace του ίδιου λογαριασμού.
  • Παράκαμψη transactional. Αποστολή ρυθμισμένη να φτάνει σε όλες τις επαφές (η transactional/all προτίμηση) παρακάμπτει ακόμα τα opt-outs συγκατάθεσης, αλλά διεύθυνση με hard bounce δεν λαμβάνει ποτέ μήνυμα - δεν έχει νόημα η αποστολή σε ανενεργό mailbox.
  • Τα παράπονα spam σταματούν και τα transactional μηνύματα. Όταν κάποιος επισημάνει το email σας ως spam, η διεύθυνση σταματά να λαμβάνει email marketing και transactional (αποδείξεις, επαναφορές κωδικού) σε αυτόν τον χώρο εργασίας - εκτός αν η υποστήριξη του Joryio έχει ενεργοποιήσει την αποστολή transactional για τον οργανισμό σας, οπότε τα παράπονα σταματούν μόνο το marketing. Αν το θέλετε, στέλνετε τα transactional από ξεχωριστό subdomain αποστολής και επικοινωνήστε με την υποστήριξη. Μια διαγραφή δεν σταματά ποτέ τα transactional· ένα hard bounce τα σταματά πάντα.

Τόσο οι αποστολές καμπάνιας όσο και journey το ελέγχουν κατά την αποστολή, άρα μια διπλή επαφή που δημιουργείται μετά το opt-out εξακολουθεί να καταστέλλεται.


Επαφές που μοιράζονται email ή τηλέφωνο​

Δύο ή περισσότερες επαφές σε ένα workspace μπορεί να μοιράζονται διεύθυνση email ή αριθμό τηλεφώνου - ένα άτομο που εισήχθη δύο φορές, ή δύο άτομα που πράγματι μοιράζονται ένα inbox ή ένα τηλέφωνο (για παράδειγμα ένα ζευγάρι με ένα οικογενειακό email). Το Joryio εφαρμόζει σε αυτές τους εξής κανόνες:

  • Μια διαγραφή φτάνει σε κάθε επαφή με αυτό το email ή τηλέφωνο. Από οποιαδήποτε πηγή - σύνδεσμο διαγραφής, κεφαλίδα one-click, σελίδα προτιμήσεων, αλλαγή στη σελίδα της επαφής, το API, ένα SDK, εισαγωγή, απάντηση STOP ή καταγγελία spam - κάθε επαφή του workspace με το ίδιο email (για email) ή τηλέφωνο (για SMS, WhatsApp και Viber) διαγράφεται επίσης. Η δική της κατάσταση συνδρομής (ή, σε διαγραφή από λίστα, η συμμετοχή της στη λίστα) ενημερώνεται και κάθε μία παίρνει εγγραφή ιστορικού: διαγράφηκε μέσω άλλης επαφής με το ίδιο email (ή τηλέφωνο).
  • Ο αποκλεισμός ισχύει και για επαφές που δημιουργούνται αργότερα. Η διαγραφή κρατιέται στη διεύθυνση ή στον αριθμό, οπότε μια επαφή που δημιουργείται αργότερα με το ίδιο email ή τηλέφωνο αποκλείεται επίσης.
  • Μια επανεγγραφή ισχύει μόνο για την επαφή στην οποία έγινε. Αν ένα από τα άτομα εγγραφεί ξανά, μόνο αυτή η επαφή γίνεται ξανά προσβάσιμη· οι άλλες παραμένουν διαγραμμένες, γιατί μπορεί να είναι διαφορετικά άτομα. Η επαφή κρατά τη δική της επανεγγραφή μέχρι οποιαδήποτε επαφή στη διεύθυνση ή στον αριθμό να διαγραφεί ξανά - τότε αποκλείονται ξανά όλες.
  • Η αποθήκευση της σελίδας προτιμήσεων χωρίς αλλαγές δεν αλλάζει τίποτα. Εφαρμόζεται μόνο ένας διακόπτης που το άτομο άλλαξε πραγματικά, και μόνο σε αυτή την επαφή.
  • Μια απάντηση STOP μπορεί να παρακαμφθεί για μία επαφή. Μια διαγραφή SMS, WhatsApp ή Viber που προήλθε από keyword STOP (από οποιονδήποτε πάροχο, και το Delivyr) μπορεί να επανεγγραφεί από το API (κανονική ενημέρωση συνδρομής - χωρίς επιπλέον flag), ένα SDK, τη σελίδα επαφής, τη δική της σελίδα προτιμήσεων ή φόρμες, και μια εισαγωγή μόνο με επιλεγμένο το "Override unsubscribes". Ισχύει μόνο για αυτή την επαφή - οι άλλες επαφές στον αριθμό μένουν μπλοκαρισμένες - και μια απάντηση START εξακολουθεί να την αίρει για τον αριθμό όπως πριν. Το ιστορικό της επαφής καταγράφει ότι η αλλαγή παρέκαμψε ένα STOP και ποιος την έκανε (το κλειδί API, την εργασία εισαγωγής, το μέλος της ομάδας ή τη σελίδα προτιμήσεων).
  • Μόνο SMS: ο πάροχος μπορεί να μπλοκάρει ακόμη. Η επανεγγραφή επαφής SMS που έστειλε STOP εμφανίζει προειδοποίηση όπου κι αν γίνεται (στη σελίδα επαφής πριν την αποθήκευση, στη σελίδα εισαγωγής και τη σύνοψή της, και στην απάντηση του API): This contact opted out by texting STOP. Your SMS provider may keep blocking messages until they text START. Το WhatsApp και το Viber δεν έχουν τέτοια προειδοποίηση.
  • Όταν ο πάροχος SMS μπλοκάρει ακόμη. Μια αποστολή που ο πάροχος SMS απορρίπτει λόγω του δικού του μπλοκαρίσματος STOP (για παράδειγμα σφάλμα Twilio 21610 ή απόρριψη opted-out του Delivyr) εμφανίζεται ως μπλοκαρισμένη από τον πάροχο (διαγραμμένη), όχι ως αποτυχία, και δεν μετρά στις ειδοποιήσεις ποσοστού bounce ή αποτυχιών. Η διαγραφή εφαρμόζεται ξανά και το ιστορικό της επαφής γράφει provider still blocks: re-opted out.
  • Τα hard bounces και οι καταγγελίες spam αίρονται μόνο από την υποστήριξη του Joryio. Μια επανεγγραφή, το API ή μια εισαγωγή δεν τα καθαρίζουν ποτέ. Επικοινωνήστε με την υποστήριξη όταν επιβεβαιωθεί ότι μια διεύθυνση λειτουργεί ξανά.
  • Ένα workspace κάθε φορά. Όλα αυτά γίνονται μέσα στο workspace όπου έγινε η διαγραφή· τα άλλα workspaces και brands σας δεν επηρεάζονται ποτέ.
  • Τα journeys ακολουθούν τους ίδιους κανόνες με τις καμπάνιες. Η διαγραφή από λίστα email ακολουθεί τη διεύθυνση και στα journeys: ένα βήμα email σε journey που χρησιμοποιεί λίστα συνδρομής παραλείπει κάθε επαφή της οποίας η διεύθυνση έφυγε από τη λίστα.

Η κάρτα συνδρομών στη σελίδα της επαφής δείχνει πότε μια επαφή αποκλείεται λόγω άλλης επαφής με το ίδιο email ή τηλέφωνο, τον λόγο (διαγραφή, STOP, hard bounce ή καταγγελία spam), και πότε η επαφή έχει δική της επανεγγραφή ενώ οι άλλες επαφές παραμένουν αποκλεισμένες. Όταν καμία άλλη επαφή στον χώρο εργασίας δεν έχει τη διεύθυνση, η κάρτα γράφει απλώς ότι η επαφή εγγράφηκε ξανά αφού το email ή ο αριθμός τηλεφώνου διαγράφηκε.

Μια παραγγελία ή ένα checkout καταστήματος δεν αντικαθιστά ποτέ το υπάρχον τηλέφωνο μιας επαφής (συμπληρώνει μόνο ένα κενό) - μόνο τα δεδομένα του λογαριασμού πελάτη στο κατάστημα, και στο Magento μια παραγγελία συνδεδεμένου πελάτη. Μια συγκατάθεση για SMS που δόθηκε με άλλον αριθμό δεν εγγράφει τον αριθμό της επαφής. Δείτε πώς τα δεδομένα του καταστήματος ενημερώνουν μια επαφή για Shopify, WooCommerce και Magento.

Η συγκατάθεση μάρκετινγκ που στέλνει ένα κατάστημα ακολουθεί τους παραπάνω κανόνες - και αυτούς, ίδιους για όλα τα καταστήματα (το newsletter του PrestaShop έχει δικούς του περιορισμούς - δείτε Newsletter του PrestaShop):

Τι στέλνει το κατάστημαΤι κάνει το Joryio
Επιλογή συγκατάθεσης σε checkout επισκέπτηΕγγράφει μια επαφή που δεν έχει ακόμη συνδρομή σε αυτό το κανάλι. Εκτός αν είναι ενεργή η ρύθμιση του καταστήματος παρακάτω, δεν επανεγγράφει ποτέ κάποιον που διαγράφηκε - σε checkout επισκέπτη ο καθένας μπορεί να πληκτρολογήσει οποιοδήποτε email.
Συγκατάθεση από συνδεδεμένο πελάτη (WooCommerce: παραγγελία ενώ ήταν συνδεδεμένος, πρόσθετο 1.6.1 ή νεότερο· Magento: παραγγελία από συνδεδεμένο πελάτη), με ημερομηνία μεταγενέστερη από την τελευταία διαγραφή της επαφήςΕπανεγγράφει επίσης μια επαφή που διαγράφηκε μέσω συνδέσμου διαγραφής ή του κουμπιού διαγραφής με ένα κλικ, της σελίδας προτιμήσεων, του API, ενός μέλους της ομάδας ή της διαγραφής από αυτό το ίδιο κατάστημα.
Κάθε συγκατάθεση από το Shopify (ρύθμιση ανενεργή)Λογίζεται ως επιλογή επισκέπτη. Το Shopify συνδέει ένα checkout επισκέπτη με τον υπάρχοντα πελάτη με το ίδιο email και δεν λέει αν ο αγοραστής ήταν συνδεδεμένος, οπότε μια συγκατάθεση από το Shopify δεν επανεγγράφει ποτέ κάποιον που διαγράφηκε.
Συγκατάθεση στο checkout ή στην εγγραφή πελάτη, με ενεργή τη ρύθμιση του καταστήματος Οι επιλογές συγκατάθεσης στο ταμείο επανεγγράφουν όσους απεγγράφηκαν (ανενεργή από προεπιλογή· Shopify, WooCommerce, Magento και PrestaShop)Επανεγγράφει μια επαφή που διαγράφηκε - και μετά από checkout επισκέπτη - όταν η ώρα της συγκατάθεσης στο κατάστημα είναι μετά την τελευταία της διαγραφή. Ο κίνδυνος: ένα checkout επισκέπτη δεν μπορεί να αποδείξει ποιος είναι ο αγοραστής, οπότε κάποιος που πληκτρολογεί το email άλλου ατόμου θα μπορούσε να το επανεγγράψει· μπορεί πάντα να διαγραφεί ξανά με ένα κλικ.
Κενό πλαίσιοΚαμία αλλαγή - δεν είναι ποτέ διαγραφή.
Διαγραφή στο κατάστημαΔιαγράφει, εκτός αν το Joryio κατέγραψε μεταγενέστερη αλλαγή για αυτή την επαφή.
Δεν αναιρείται ποτέ από συγκατάθεση καταστήματος, με τη ρύθμιση ενεργή ή ανενεργήΚαταγγελία spam, hard bounce, αποκλεισμός σε επίπεδο οργανισμού, άλλος χώρος εργασίας, διαγραφή που καταγράφηκε σε άλλη επαφή με το ίδιο email ή τηλέφωνο, και STOP στο SMS.
  • Η ρύθμιση είναι ανά σύνδεση καταστήματος, στο Ρυθμίσεις → Ενσωματώσεις → <κατάστημα>, ανενεργή από προεπιλογή· μόνο οι διαχειριστές μπορούν να την αλλάξουν και κάθε αλλαγή καταγράφεται στο αρχείο ελέγχου. Με ενεργή διπλή επιβεβαίωση λίστας email ή διπλή επιβεβαίωση SMS, στέλνεται πρώτα η επιβεβαίωση και η επαφή μένει σε αναμονή μέχρι να επιβεβαιώσει.
  • Η επανεγγραφή αφορά μόνο αυτή την επαφή· οι άλλες επαφές με το ίδιο email ή τηλέφωνο παραμένουν διαγραμμένες. Το ιστορικό της επαφής λέει γιατί, για παράδειγμα επανεγγράφηκε από το checkout του καταστήματος (συνδεδεμένος πελάτης) μετά από διαγραφή μέσω της σελίδας προτιμήσεων.
  • SMS: με ενεργή τη διπλή επιβεβαίωση (double opt-in) για SMS, μια επανεγγραφή στέλνει ένα μήνυμα "Απαντήστε YES" και η επαφή μένει σε αναμονή μέχρι να απαντήσει. Μια επαφή που έστειλε STOP επιστρέφει μόνο με αυτόν τον τρόπο - με απενεργοποιημένη τη διπλή επιβεβαίωση για SMS, μια συγκατάθεση καταστήματος δεν την επανεγγράφει ποτέ.
  • Η συγκατάθεση καταστήματος εγγράφει στο κανάλι, όχι σε λίστα: μια λίστα που απαιτεί διπλή επιβεβαίωση εξακολουθεί να στέλνει το email επιβεβαίωσης όταν το άτομο μπαίνει σε αυτή.

Στο PrestaShop η συγκατάθεση είναι η εγγραφή του πελάτη στο newsletter, μόνο για email. Δείτε επίσης PrestaShop: Συγκατάθεση μάρκετινγκ.

  • Η εγγραφή πελάτη. Η σημαία newsletter εγγράφει την επαφή στο email, με την ημερομηνία newsletter_date_add του PrestaShop. Η διαγραφή στο κατάστημα (στη σελίδα λογαριασμού ή στο back office) είναι ρητή διαγραφή από το κατάστημα και διαγράφει την επαφή, εκτός αν το Joryio κατέγραψε μεταγενέστερη αλλαγή για αυτή την επαφή. Μια αλλαγή που αποθηκεύεται στον πελάτη από το storefront από κάποιον που δεν είναι συνδεδεμένος ως αυτός ο πελάτης μπορεί να διαγράψει, αλλά ποτέ να εγγράψει.
  • Το μπλοκ newsletter (ps_emailsubscription) είναι ανώνυμη φόρμα: ο καθένας μπορεί να πληκτρολογήσει οποιοδήποτε email. Μια εγγραφή από το μπλοκ λογίζεται ως συγκατάθεση μόνο για τον συνδεδεμένο εγγεγραμμένο κάτοχο αυτού του email ή μετά την επιβεβαίωση email του PrestaShop, όταν το κατάστημα έχει ενεργά τα email επαλήθευσης· κάθε άλλη εγγραφή από το μπλοκ δεν εφαρμόζεται. Μια διαγραφή από το μπλοκ εφαρμόζεται με βάση τη διεύθυνση email.
  • Ο αρχικός συγχρονισμός εισάγει τους συνδρομητές μόνο ως συγκαταθέσεις: δεν διαγράφει ποτέ κανέναν και δεν επανεγγράφει ποτέ μια επαφή που διαγράφηκε.
  • Μετά από διαγραφή, μια συγκατάθεση newsletter από το PrestaShop δεν επανεγγράφει την επαφή - ο κανόνας του συνδεδεμένου πελάτη παραπάνω δεν ισχύει για το PrestaShop. Η μόνη εξαίρεση είναι το πλαίσιο newsletter που επιλέχθηκε όταν ένα checkout επισκέπτη δημιουργεί τον λογαριασμό επισκέπτη του αγοραστή, με ενεργή τη ρύθμιση Οι επιλογές συγκατάθεσης στο ταμείο επανεγγράφουν όσους απεγγράφηκαν.
  • Οι προσφορές συνεργατών (optin) δεν είναι συγκατάθεση μάρκετινγκ και αγνοούνται.

Λεπτομέρειες ανά κατάστημα: Shopify, WooCommerce, Magento, PrestaShop.


Η διαγραφή γίνεται ανά κανάλι​

Η συναίνεση δίνεται ανά κανάλι, οπότε μια διαγραφή επηρεάζει μόνο το κανάλι από το οποίο προήλθε.

  • Σύνδεσμος διαγραφής email και κεφαλίδα ενός κλικ. Το άτομο σταματά να λαμβάνει email (και, όταν η καμπάνια έχει θέμα συνδρομής, βγαίνει και από αυτό το θέμα στο email). Οι συνδρομές του σε SMS, WhatsApp, push και Viber μένουν ως έχουν. Η σελίδα του λέει: "Η εγγραφή σας στα email καταργήθηκε. Θα συνεχίσετε να λαμβάνετε τα μηνύματα SMS/WhatsApp στα οποία έχετε εγγραφεί."
  • Κατάργηση εγγραφής από όλα τα κανάλια. Μετά από αυτό, η σελίδα προσφέρει ένα ρητό κουμπί Κατάργηση εγγραφής από όλα τα κανάλια. Μόνο αυτό το κουμπί διαγράφει από κάθε κανάλι και θέμα· καταγράφεται ως διαγραφή με scope global, με απόδοση στην ίδια καμπάνια και παραλλαγή.
  • SMS, WhatsApp και Viber. Το STOP και ο σύνδεσμος διαγραφής επηρεάζουν μόνο εκείνο το κανάλι (ή μόνο τη λίστα του αποστολέα)· το STOPALL επεκτείνεται σε κάθε αριθμό εκείνου του καναλιού, ποτέ σε άλλα κανάλια.
  • Σύνδεσμοι που στάλθηκαν πριν από τις 2026-10-04. Οι σύνδεσμοι διαγραφής που βρίσκονται ήδη στα εισερχόμενα συνεχίζουν να κάνουν ό,τι έκαναν όταν στάλθηκαν: ο σύνδεσμος ενός παλαιότερου email εξακολουθεί να διαγράφει από όλα.
  • Σελίδα προτιμήσεων. Παραμένει ανά κανάλι και ανά θέμα.

Νομική βάση. Η συναίνεση συλλέγεται ανά κανάλι, και μια διαγραφή την ανακαλεί για αυτό το κανάλι: από εκεί και πέρα, κανένα μάρκετινγκ σε αυτό το κανάλι. Άλλα κανάλια επιτρέπεται να χρησιμοποιηθούν μόνο αν το άτομο έχει εγγραφεί σε αυτά.


Κεφαλίδα List-Unsubscribe (RFC 8058)​

Επισκόπηση​

Το RFC 8058 ορίζει έναν τυπικό τρόπο για τους email clients να παρέχουν λειτουργία διαγραφής με ένα κλικ. Το Joryio προσθέτει αυτόματα αυτές τις κεφαλίδες στα εξερχόμενα email.

Ενεργή από προεπιλογή. Η κεφαλίδα είναι ενεργή σε κάθε workspace, ακόμη και σε workspace που δεν αποθήκευσε ποτέ τις Ρυθμίσεις Συνδρομών - κάθε email μάρκετινγκ (καμπάνιες και journeys) τη φέρει. Αφαιρείται μόνο όταν απενεργοποιήσετε τον διακόπτη List-Unsubscribe στις Ρυθμίσεις Συνδρομών, ή όταν μια συναλλακτική καμπάνια ορίσει τη δική της παράκαμψη Χωρίς διαγραφή - μόνο συναλλακτικά. Τα Gmail και Yahoo απαιτούν διαγραφή με ένα κλικ από αποστολείς μεγάλου όγκου, γι' αυτό αφήστε την ενεργή στα email μάρκετινγκ.

Κεφαλίδες που προστίθενται​

List-Unsubscribe: <https://api-eu1.joryio.com/api/u/{token}>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Ρύθμιση​

Αποθηκεύεται στις ρυθμίσεις workspace (ένα αντικείμενο listUnsubscribe που λείπει, ή χωρίς enabled, σημαίνει ενεργή· μόνο το enabled: false την απενεργοποιεί):

subscriptionSettings: {
listUnsubscribe: {
enabled: true,
includeMailto: true, // Include mailto: link (recommended for Gmail)
scope: 'global' // 'global' or 'list'
}
}

Επιλογές εύρους​

ΕύροςΣυμπεριφορά
globalΗ διαγραφή με ένα κλικ αφαιρεί τον χρήστη από όλες τις επικοινωνίες email
listΔιαγράφει μόνο από τη συγκεκριμένη λίστα από την οποία στάλθηκε το email

Στοιχείο ελέγχου σε επίπεδο καμπάνιας​

Για μια καμπάνια email, το βήμα Compose του composer έχει ένα ενιαίο στοιχείο ελέγχου Διαγραφή που ελέγχει τόσο την παρουσία του συνδέσμου/κεφαλίδας διαγραφής ενός κλικ όσο και από τι αφαιρεί τους παραλήπτες:

  • Καθολική διαγραφή (προεπιλογή) - η κεφαλίδα περιλαμβάνεται και η διαγραφή ενός κλικ αφαιρεί τον παραλήπτη από όλα τα email (διαγραφή σε όλο τον χώρο εργασίας). Αυτή είναι η κανονική επιλογή για marketing email.
  • Διαγραφή από: <θέμα> (εμφανίζεται μόνο όταν ο χώρος εργασίας έχει λίστες συνδρομών) - η κεφαλίδα περιλαμβάνεται και η διαγραφή αφαιρεί τον παραλήπτη μόνο από αυτό το θέμα, αφήνοντας άθικτα τα υπόλοιπα θέματά του. Η επιλογή θέματος κάνει επίσης την αποστολή να παραλείπει όποιον έχει ήδη διαγραφεί από αυτό.
  • Χωρίς διαγραφή - μόνο συναλλακτικό - καταστέλλει πλήρως την κεφαλίδα List-Unsubscribe για αυτή την αποστολή (αποδείξεις, επαναφορές κωδικού, κωδικοί μίας χρήσης), που εξαιρούνται από τις απαιτήσεις opt-out.

Στόχευση έναντι εύρους διαγραφής. Αυτό το στοιχείο ελέγχου αφορά μόνο τον σύνδεσμο/κεφαλίδα διαγραφής. Δεν φιλτράρει παραλήπτες. Για να στείλετε μόνο στους συνδρομητές ενός θέματος, προσθέστε ένα φίλτρο 'μέλος λίστας' στο βήμα Κοινό - το φίλτρο ήδη εξαιρεί όποιον διαγράφηκε από τη λίστα και υπολογίζεται κατά την αποστολή.

Τα SMS / WhatsApp δεν έχουν κεφαλίδα RFC 8058, οπότε το βήμα Compose τους εμφανίζει αντ' αυτού ένα στοιχείο ελέγχου Θέμα διαγραφής (Καθολικό έναντι συγκεκριμένου θέματος) με την ίδια σημασία εύρους· δεν υπάρχει επιλογή "χωρίς διαγραφή" επειδή μια διαγραφή STOP τηρείται πάντα.

Κατά την αποστολή, η επιλογή της καμπάνιας συγχωνεύεται πάνω από την πολιτική workspace. Η αποθηκευμένη μορφή:

campaign.channelConfig = {
// omit listUnsubscribe entirely to inherit the workspace policy (= Global)
listUnsubscribe: {
enabled: false, // "No unsubscribe": suppress the header for this campaign
},
};
// Topic scope is stored separately as the campaign's subscriptionCategoryId.

Συμμόρφωση: επιλέξτε "Χωρίς διαγραφή" μόνο για γνήσια transactional / relationship μηνύματα. Τα μαζικά και marketing email απαιτούν κεφαλίδα List-Unsubscribe (κανόνες αποστολέων μαζικού email Gmail και Yahoo).


Φιλοξενούμενη σελίδα προτιμήσεων και διαγραφή​

Κάθε μήνυμα περιέχει σύνδεσμο προς τη φιλοξενούμενη σελίδα: τον σύνδεσμο διαγραφής (/u/:token) και τον σύνδεσμο διαχείρισης προτιμήσεων (/preferences/:token). Αυτή η ενότητα εξηγεί τι βλέπει εκεί ο παραλήπτης.

Ποια κανάλια εμφανίζονται​

Η σελίδα εμφανίζει μόνο τα κανάλια που έχουν νόημα για αυτό το άτομο:

  • το κανάλι είναι ρυθμισμένο στον χώρο εργασίας σας (έχει πάροχο ή αποστολέα), και
  • το άτομο είναι προσβάσιμο σε αυτό: διεύθυνση email για το Email· αριθμός τηλεφώνου για SMS, WhatsApp και Viber· τουλάχιστον μία ενεργή συσκευή push ή συνδρομή web push για το Push.

Ένα κανάλι στο οποίο το άτομο είναι εγγεγραμμένο αυτή τη στιγμή εμφανίζεται πάντα, ακόμη κι αν δεν είναι αλλιώς προσβάσιμο, ώστε να μπορεί πάντα να αποχωρήσει. Οι γραμμές λιστών ακολουθούν τον ίδιο κανόνα. Το Viber εμφανίζεται με τη δική του ετικέτα όπως κάθε άλλο κανάλι.

Σύνδεσμος διαγραφής: ένα κλικ στη σελίδα, και Αναίρεση​

Το άνοιγμα του συνδέσμου διαγραφής δεν αλλάζει τίποτα από μόνο του. Η σελίδα ρωτά πρώτα:

  1. Λέει τι θα σταματήσει και από ποιον - για παράδειγμα "Δεν θα λαμβάνετε πλέον email από Acme." - και τη διεύθυνση στην οποία στάλθηκε το μήνυμα.
  2. Το άτομο πατά Κατάργηση εγγραφής. Μόνο ένα πραγματικό κλικ ή πάτημα πλήκτρου σε αυτό το κουμπί στέλνει τη διαγραφή: η σελίδα δεν διαγράφει ποτέ μόνη της, όσο κι αν μείνει ανοιχτή. Ακριβώς πάνω από το κουμπί μπορεί να επιλεγεί προαιρετικά ένας λόγος.
  3. Το Αλλαγή προτιμήσεων αντί γι' αυτό ανοίγει τα πλήρη στοιχεία ελέγχου καναλιών και λιστών αντί για διαγραφή.

Το κέντρο προτιμήσεων κάνει την ίδια ερώτηση. Το κουμπί κατάργησης εγγραφής του δεν διαγράφει από μόνο του: ανοίγει αυτή την ερώτηση, με τον προαιρετικό λόγο, και μόνο το Κατάργηση εγγραφής εκεί στέλνει τη διαγραφή. Ο λόγος ζητείται μόνο σε αυτή την ερώτηση - η αποθήκευση προτιμήσεων, η απενεργοποίηση ενός καναλιού ή μιας λίστας και η επανεγγραφή δεν ζητούν ούτε στέλνουν ποτέ λόγο.

Το εύρος του συνδέσμου δεν αλλάζει: το κανάλι από το οποίο ήρθε το μήνυμα, ή μία λίστα· ένας παλαιότερος σύνδεσμος από πριν τους συνδέσμους ανά κανάλι εξακολουθεί να διαγράφει από όλα.

Μετά τη διαγραφή, η κορυφή της σελίδας λέει Η εγγραφή σας καταργήθηκε και τι αφαιρέθηκε, και προσφέρει:

  • Αναίρεση - εμφανίζεται για 10 λεπτά. Εγγράφει ξανά ακριβώς ό,τι μόλις αφαιρέθηκε, μέσω της ίδιας καταγεγραμμένης διαδρομής με την αποθήκευση προτιμήσεων (καταγράφεται ως undo_unsubscribe), και επανενεργοποιεί τον σύνδεσμο.
  • Διαχείριση προτιμήσεων - εμφανίζει από κάτω τα στοιχεία ελέγχου καναλιών και λιστών.

Το αποτέλεσμα κάθε ενέργειας (διαγραφή, διαγραφή από όλα, αποθήκευση, επανεγγραφή) εμφανίζεται στην κορυφή της σελίδας και η σελίδα κυλά σε αυτό. Αυτό λειτουργεί και σε σελίδα με προσαρμοσμένο design (η ερώτηση και τα στοιχεία ελέγχου τοποθετούνται στη θέση {{ preferences_form }}) και σε λειτουργία ανακατεύθυνσης (το άτομο πατά πρώτα Κατάργηση εγγραφής και η διαγραφή καταγράφεται πριν σταλεί στο URL σας).

Από 2026-10-11 έως 2026-10-15 η σελίδα διέγραφε μόνη της μόλις ήταν ορατή για περίπου ένα δευτερόλεπτο. Αυτό δεν συμβαίνει πλέον - δείτε την επόμενη ενότητα.

Γιατί η σελίδα ζητά κλικ​

Γιατί έχει σημασία. Πολλές εταιρείες χρησιμοποιούν εταιρική ασφάλεια email που ανοίγει κάθε σύνδεσμο ενός μηνύματος ("safe links" ή σάρωση συνδέσμων) πριν το διαβάσει το άτομο. Ορισμένοι από αυτούς τους σαρωτές ανοίγουν συνδέσμους σε πραγματικό browser, που για έναν server μοιάζει ακριβώς με άνθρωπο. Μια σελίδα που διέγραφε μόνη της μόλις άνοιγε διέγραφε λοιπόν άτομα που δεν το ζήτησαν ποτέ - σε μία περίπτωση 48 δευτερόλεπτα μετά την αποστολή, αμέσως αφού ο σαρωτής είχε πατήσει κάθε σύνδεσμο του email.

Τι κάνει το Joryio.

  • Το άνοιγμα του συνδέσμου δεν αλλάζει τίποτα. Ένα άτομο πρέπει να πατήσει Κατάργηση εγγραφής στη σελίδα.
  • Το κουμπί ενεργεί μόνο με πραγματικό κλικ ή πάτημα πλήκτρου. Ένα script που εκτελείται στη σελίδα δεν μπορεί να το πατήσει για λογαριασμό του ατόμου.
  • Η Αναίρεση προσφέρεται για 10 λεπτά, ώστε όποιος έφυγε κατά λάθος να επιστρέψει με ένα κλικ.
  • Μια διαγραφή που εξακολουθεί να μοιάζει αυτόματη (έγινε μέσα σε δευτερόλεπτα από την αποστολή, ή η κίνηση μοιάζει με σαρωτή) καταγράφεται, αλλά επισημαίνεται Πιθανώς αυτόματη στο ιστορικό συνδρομών της επαφής, για να την ελέγξετε.

Το κουμπί διαγραφής της εφαρμογής email παραμένει ένα κλικ. Το Gmail, το Yahoo και το Apple Mail εμφανίζουν δικό τους κουμπί Unsubscribe με το πρότυπο ενός κλικ (RFC 8058, η κεφαλίδα List-Unsubscribe-Post). Απαιτείται για αποστολείς μεγάλου όγκου, στέλνεται από τον πάροχο του γραμματοκιβωτίου μόνο όταν το άτομο πατήσει αυτό το κουμπί, και δεν ενεργοποιείται από σαρωτές συνδέσμων. Λειτουργεί ακριβώς όπως πριν (δείτε Κεφαλίδα List-Unsubscribe). Χρησιμοποιεί διαφορετική διεύθυνση από το κουμπί της σελίδας, οπότε τα δύο καταγράφονται χωριστά.

Πού εμφανίζονται οι αιτίες διαγραφής​

Η ερώτηση αν θα γίνει διαγραφή (στον σύνδεσμο διαγραφής, και μετά το κουμπί κατάργησης εγγραφής του κέντρου προτιμήσεων) προσφέρει προαιρετική αιτία διαγραφής. Η αιτία, και η επισήμανση Πιθανώς αυτόματη, εμφανίζονται σε τρία σημεία:

  • Προφίλ επαφής - η κάρτα Ιστορικό συνδρομών δείχνει την αιτία σε κάθε διαγραφή και ετικέτα Πιθανώς αυτόματη στις επισημασμένες.
  • Αναλυτικά καμπάνιας - κάρτα Διαγραφές ανά αιτία δίπλα στον αριθμό διαγραφών: μία γραμμή ανά άτομο με την τελευταία αιτία του, οι κορυφαίες αιτίες συν "Άλλες", και "Χωρίς αιτία". Διαγραφές που καταγράφηκαν πριν από τον Οκτώβριο 2026 δεν έχουν αιτία στα αναλυτικά και μετρώνται ως "Χωρίς αιτία".
  • Settings > Subscriptions > Unsubscribe reasons - η λίστα του χώρου εργασίας με πρόσφατες διαγραφές με αιτία ή επισήμανση: πότε, επαφή (τα προσωπικά δεδομένα καλύπτονται για μέλη χωρίς το δικαίωμα pii:view), κανάλι ή λίστα, αιτία και καμπάνια, με φίλτρο Μόνο πιθανώς αυτόματες.

Πώς έγινε κάθε διαγραφή. Από τις 2026-10-15 κάθε διαγραφή καταγράφει επίσης πώς έφτασε - το κουμπί διαγραφής της εφαρμογής email, το κουμπί Κατάργηση εγγραφής στη σελίδα, το κέντρο προτιμήσεων, η διαγραφή από όλα, το API, ένα μέλος της ομάδας στο dashboard, το SDK, μια εισαγωγή, μια απάντηση STOP, μια αναφορά spam, η διαγραφή μέσω του παρόχου email ή ένας συγχρονισμός καταστήματος - καθώς και τον browser (μόνο browser και λειτουργικό σύστημα, ποτέ ολόκληρη τη συμβολοσειρά ή τη διεύθυνση IP) και πόσο μετά την αποστολή έγινε. Το Ιστορικό συνδρομών της επαφής το δείχνει σε κάθε διαγραφή ως Πώς. Οι διαγραφές που έκανε η σελίδα χωρίς κλικ μεταξύ 2026-10-11 και 2026-10-15 εμφανίζονται ως "Άνοιγμα σελίδας κατάργησης, χωρίς κλικ".

Συχνές ερωτήσεις: αυτόματες διαγραφές​

Μπορεί ένας σαρωτής συνδέσμων να διαγράψει τις επαφές μου; Όχι από τη σελίδα: το άνοιγμα του συνδέσμου δεν αλλάζει τίποτα, και η σελίδα διαγράφει μόνο όταν ένα άτομο πατήσει Κατάργηση εγγραφής με πραγματικό κλικ ή πάτημα πλήκτρου. Οι διαγραφές που έκανε η σελίδα μόνη της μεταξύ 2026-10-11 και 2026-10-15 εμφανίζονται ως "Άνοιγμα σελίδας κατάργησης, χωρίς κλικ" στο ιστορικό συνδρομών της επαφής.

Βλέπω ένα ξαφνικό κύμα διαγραφών. Τι κάνω; Ανοίξτε Settings > Subscriptions > Unsubscribe reasons, ενεργοποιήστε Μόνο πιθανώς αυτόματες και ελέγξτε τις επισημασμένες εγγραφές και την καμπάνια τους. Εγγράψτε ξανά ένα άτομο μόνο με τη δική του συναίνεση (π.χ. σας λέει ότι ήταν λάθος ή εγγράφεται ξανά). Μην εγγράφετε ποτέ ξανά άτομα μαζικά: μια διαγραφή είναι ανάκληση συναίνεσης μέχρι να πει το άτομο το αντίθετο.

Αλλάζει αυτό το κουμπί Unsubscribe στο Gmail, το Yahoo ή το Apple Mail; Όχι. Αυτό το κουμπί ενός κλικ είναι ξεχωριστός, τυποποιημένος μηχανισμός και δεν έχει αλλάξει.

Ένα άτομο ανοίγει ξανά τον ίδιο σύνδεσμο διαγραφής. Τι συμβαίνει; Ο σύνδεσμος συνεχίζει να λειτουργεί μέχρι να λήξει. Αν το άτομο είναι ακόμη διαγεγραμμένο, η σελίδα το επιβεβαιώνει και τίποτα δεν καταγράφεται ξανά, οπότε τίποτα δεν μετριέται δύο φορές. Αν εγγράφηκε ξανά στο μεταξύ (για παράδειγμα στο κέντρο προτιμήσεων), ο σύνδεσμος το διαγράφει ξανά: το πάτημα της διαγραφής λειτουργεί πάντα, με την ίδια προστασία από σαρωτές όπως την πρώτη φορά.


Σελίδα προτιμήσεων (προσαρμοσμένο design)​

Από προεπιλογή, οι παραλήπτες που επιλέγουν σύνδεσμο διαγραφής ή «διαχείριση προτιμήσεων» βλέπουν το ενσωματωμένο preference center του Joryio. Μπορείτε να το αντικαταστήσετε με δική σας branded σελίδα.

Πού: Ρυθμίσεις → Subscriptions → Preference page.

Η σελίδα είναι ανά workspace και έχει τρεις λειτουργίες:

  • Built-in default - το τυπικό preference center του Joryio (εναλλαγές καναλιών + λιστών). Λειτουργεί πάντα, χωρίς ρύθμιση.
  • Custom HTML - πλήρης editor HTML/Liquid με live preview (απόδοση με δείγμα δεδομένων). Περιγράφεται παρακάτω.
  • Redirect to URL - παραλείπει εντελώς τη σελίδα μας και στέλνει τον παραλήπτη στη δική σας. Στον σύνδεσμο διαγραφής καταγράφουμε πρώτα το opt-out και μετά ανακατευθύνουμε στο URL σας με προσαρτημένα ?email=…&status=unsubscribed. Ο σύνδεσμος διαχείρισης προτιμήσεων ανακατευθύνει με ?token=…, το οποίο η σελίδα σας μπορεί να χρησιμοποιήσει για ανάγνωση/εγγραφή προτιμήσεων μέσω του δημόσιου API. Η συμμόρφωση διατηρείται σε κάθε περίπτωση.

Πώς λειτουργεί​

  • Συντάσσετε το σώμα σελίδας σε HTML. Μπορεί να χρησιμοποιεί Liquid: εξατομίκευση ({{ firstName }}, {{ email }}), content blocks ({{ blocks.<slug> }}) και τα subscription URL tags παρακάτω.
  • Τοποθετήστε το tag {{ preferences_form }} στο σημείο όπου πρέπει να εμφανιστούν τα λειτουργικά στοιχεία ελέγχου συνδρομών (εναλλαγές καναλιών + λιστών, Save, Unsubscribe from all) - το Joryio αποδίδει τη λειτουργική φόρμα σε αυτό το σημείο.
  • Αν παραλείψετε το tag, τα στοιχεία ελέγχου προστίθενται αυτόματα στο τέλος, ώστε ο παραλήπτης να μπορεί πάντα να διαγραφεί (ο editor προειδοποιεί όταν λείπει το tag).
  • Η σελίδα αποδίδεται στην πλευρά του διακομιστή για κάθε παραλήπτη (ώστε τα URL διαγραφής και η εξατομίκευση να είναι πραγματικά) και κατόπιν καθαρίζεται πριν φτάσει στο πρόγραμμα περιήγησης: διατηρούνται layout, εικόνες, inline styles και scoped block <style>· αφαιρούνται scripts, event handlers, iframes, στοιχεία <form> και CSS που περιέχει scripts.

Διαθέσιμα tags​

TagΠεριγραφή
{{ preferences_form }}Τα λειτουργικά στοιχεία ελέγχου συνδρομής (τοποθετήστε μία φορά)
{{ unsubscribe_url }}Καθολική διαγραφή
{{ preferences_url }}Σύνδεσμος επιστροφής σε αυτή τη σελίδα
{{ resubscribe_url }}Σύνδεσμος επανεγγραφής
{{ firstName }} / {{ email }}Εξατομίκευση παραλήπτη
{{ blocks.<slug> }}Επαναχρησιμοποιήσιμο content block

Σημειώσεις​

  • Γίνεται δεκτό πλήρες markup σελίδας (<html>/<head>/<body>). Η σελίδα είναι αυτόνομη οθόνη, επομένως αποδίδεται το περιεχόμενο και τα styles του body.
  • Η ίδια σελίδα εξυπηρετεί τόσο τη διαγραφή με ένα κλικ (/u/:token) όσο και τους συνδέσμους διαχείρισης προτιμήσεων (/preferences/:token).
  • Η ενσωματωμένη προεπιλεγμένη σελίδα προσφέρει επίσης ενέργεια «Re-subscribe to all». Ένα {{ resubscribe_url }} (που προσαρτά ?action=resubscribe) επανεγγράφει όταν ανοίξει. Το προαιρετικό «reason for unsubscribing» (καταγράφεται στο audit log + το συμβάν message.unsubscribed) ζητείται μόνο στην ερώτηση διαγραφής, ποτέ δίπλα στο Save ή στο Re-subscribe to all.

Χειρισμός Bounce​

Τύποι Bounce​

ΤύποςΠεριγραφήΕνέργεια
Soft BounceΠροσωρινή αποτυχία παράδοσης (γεμάτο mailbox, διακομιστής εκτός λειτουργίας)Μετράται μέσα σε χρονικό παράθυρο· κλιμακώνεται σε hard bounce μετά από πολλές εμφανίσεις
Hard BounceΜόνιμη αποτυχία παράδοσης (μη έγκυρη διεύθυνση, domain δεν υπάρχει)Επισημαίνει το email ως μη έγκυρο (καταστέλλεται από αποστολές)

Ένα hard bounce επισημαίνει τη διεύθυνση ως μη έγκυρη και σταματά την αποστολή προς αυτή, αλλά δεν διαγράφει την επαφή - δεν ζήτησε opt-out, οπότε η συγκατάθεσή της παραμένει ανέπαφη (η εκκαθάριση bounce, π.χ. κατά αλλαγή email, την κάνει ξανά αποδέκτη). Η καταστολή ακολουθεί τη διεύθυνση email σε κάθε διπλή επαφή του workspace (δείτε Τα email opt-outs ακολουθούν τη διεύθυνση), άρα δεν στέλνεται ούτε σε δεύτερη επαφή με το ίδιο ανενεργό mailbox. Ένα soft bounce γίνεται ανεκτό έως softBounceMaxRetries φορές μέσα στο softBounceRetryHours. Πέρα από αυτό αντιμετωπίζεται ως hard bounce.

Ρύθμιση​

subscriptionSettings: {
bounceHandling: {
softBounceRetryHours: 24, // Window in which soft bounces are counted
softBounceMaxRetries: 5, // Soft bounces in-window before escalating to a hard bounce
resubscribeOnEmailChange: true // Clear the invalid flag when the email changes
}
}

Ενσωμάτωση Webhook​

Το Joryio επεξεργάζεται αυτόματα bounce webhooks από:

  • Amazon SES: Ειδοποιήσεις SNS
  • SendGrid: Event webhooks
  • Mailgun: Webhooks

Τα webhooks bounce/event παρόχων ρυθμίζονται με τον email provider σας κατά το onboarding - τα συμβάντα έπειτα εισέρχονται αυτόματα.

Μη αυτόματη εκκαθάριση Bounce​

Οι administrators μπορούν να εκκαθαρίσουν κατάσταση bounce μέσω UI ή API:

await subscriptionsApi.clearBounceStatus(userId, 'Email confirmed valid by user');
Hard bounces και καταγγελίες spam

Ο καθαρισμός bounce από τον πίνακα ελέγχου ή το API καθαρίζει μόνο soft bounce. Ένα hard bounce ή μια καταγγελία spam αίρεται μόνο από την υποστήριξη του Joryio - δείτε Επαφές που μοιράζονται email ή τηλέφωνο.

Διευθύνσεις αναμετάδοσης του Sign in with Apple

Αν τα μηνύματα προς διευθύνσεις @privaterelay.appleid.com ή @private.icloud.com επέστρεψαν (bounce) επειδή ο τομέας αποστολής σας δεν είχε καταχωριστεί στην Apple, οι διευθύνσεις αυτές μπορεί να έχουν επισημανθεί ως μη έγκυρες. Διορθώστε πρώτα την καταχώριση και μετά εκκαθαρίστε τα bounces. Δείτε Apple Private Email Relay.


Μεταβλητές Liquid template​

Διαθέσιμες μεταβλητές​

Χρησιμοποιήστε αυτές στα email templates σας:

ΜεταβλητήΠεριγραφή
{{ unsubscribe_url }}URL καθολικής διαγραφής
{{ unsubscribe_url_list }}URL διαγραφής για συγκεκριμένη λίστα
{{ preferences_url }}URL preference center
{{ resubscribe_url }}URL επανεγγραφής (για win-back καμπάνιες)

Παράδειγμα χρήσης​

<p>Don't want to receive these emails?</p>
<p>
<a href="{{ unsubscribe_url_list }}">Unsubscribe from this list</a>
or
<a href="{{ preferences_url }}">Manage your preferences</a>
</p>

Φίλτρα τμημάτων​

Τύποι φίλτρων​

Τρεις νέοι τύποι φίλτρων για τμηματοποίηση:

Φίλτρο συνδρομής καναλιού​

Στοχεύστε χρήστες βάσει κατάστασης συνδρομής καναλιού:

{
type: 'channel_subscription',
operator: 'subscribed_to_channel', // or 'not_subscribed_to_channel'
channel: 'email',
subscriptionStatus: 'opted_in' // optional: specific status
}

Φίλτρο μέλους λίστας​

Στοχεύστε χρήστες βάσει συμμετοχής σε λίστα:

{
type: 'list_membership',
operator: 'member_of_list', // or 'not_member_of_list'
listId: 'list-uuid',
channel: 'email' // optional: specific channel
}

Φίλτρο κατάστασης Bounce​

Στοχεύστε χρήστες βάσει εγκυρότητας email:

{
type: 'bounce_status',
operator: 'email_valid' // 'email_valid', 'email_bounced',
// 'email_hard_bounced', 'email_soft_bounced'
}

Περιπτώσεις χρήσης​

  1. Αποστολή μόνο σε χρήστες με opt-in:

    { type: 'channel_subscription', operator: 'subscribed_to_channel',
    channel: 'email', subscriptionStatus: 'opted_in' }
  2. Εξαίρεση bounced emails:

    { type: 'bounce_status', operator: 'email_valid' }
  3. Στόχευση συνδρομητών newsletter:

    { type: 'list_membership', operator: 'member_of_list',
    listId: 'newsletter-list-id' }

Αναφορά API​

Η πλήρης αναφορά REST για διαχείριση συγκατάθεσης καναλιού, λιστών συνδρομών και συμμετοχής σε λίστες - κάθε endpoint με παραδείγματα αιτήματος/απόκρισης και απαιτούμενα scopes - βρίσκεται στη σελίδα Subscriptions API.

Δύο πράγματα που αξίζει να γνωρίζετε πριν την κλήση:

  • Μπορείτε να εγγράψετε στην ίδια κλήση που δημιουργεί την επαφή. Κάθε στοιχείο του attributes στο POST /users/track δέχεται subscriptions - δείτε Συνδρομές σε λίστες. Τα αποκλειστικά endpoints παρακάτω παραμένουν ο τρόπος να αλλάξετε τη συγκατάθεση αργότερα. Ένα υπάρχον opt-out δεν αναιρείται ποτέ από αυτή την κλήση ή από μια εισαγωγή: διατηρείται και αναφέρεται, και η εκ νέου επιλογή opt-in μιας επαφής που έχει απεγγραφεί απαιτεί πάντα ρητή κλήση στο endpoint εγγραφής.
  • Το :userId σε αυτές τις διαδρομές είναι το εσωτερικό id επαφής του Joryio (όπως επιστρέφεται από το Users API), όχι το εξωτερικό σας user id.

Ένα τυπικό opt-in - εγγράψτε επαφή σε λίστα στο κανάλι email:

curl -X POST https://api-eu1.joryio.com/api/subscriptions/contacts/665f1c2ab3d4e5f6a7b8c9d0/lists/3f6c1a2e-9d4b-4f0a-8c7e-1b2d3e4f5a6b \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "channel": "email", "source": "api", "consentText": "Weekly newsletter signup" }'

Δημόσια endpoints (χωρίς έλεγχο ταυτότητας)​

// One-click unsubscribe (RFC 8058): the mail app's List-Unsubscribe-Post
POST /u/:token

// The hosted page's Unsubscribe button (a person's click only, see #automatic-unsubscribe)
// Body: { reason?: string, view?: 'unsubscribe' | 'preferences' }
POST /u/:token/confirm

// Get preferences
GET /preferences/:token

// Save preferences
POST /preferences/:token
Body: { channels: [...], lists: [...], reason?: string, undo?: boolean }

SDK Endpoints (έλεγχος ταυτότητας με κλειδί SDK)​

Αυτά τα endpoints χρησιμοποιούνται από το Web SDK και ελέγχονται μέσω κεφαλίδας X-SDK-Key.

// Update channel subscription
POST /v1/subscriptions/channel
Headers: { 'X-SDK-Key': 'jry_sdk_web_...' }
Body: {
channel: 'email' | 'sms' | 'whatsapp' | 'push' | 'viber',
status: 'optedIn' | 'subscribed' | 'unsubscribed',
userId?: string, // Use if user is identified
anonymousId?: string // Use if user is anonymous
}

// Update subscription group (list) membership
POST /v1/subscriptions/group
Headers: { 'X-SDK-Key': 'jry_sdk_web_...' }
Body: {
groupId: string, // List ID
channel: 'email' | 'sms' | 'whatsapp' | 'push' | 'viber',
action: 'subscribe' | 'unsubscribe',
userId?: string,
anonymousId?: string
}

Αν δεν υπάρχει ακόμη προφίλ για το userId ή το anonymousId, ο διακομιστής το δημιουργεί - με βάση το userId όταν στέλνεται, αλλιώς ως ανώνυμο προφίλ - όπως ακριβώς το /v1/alias/add, ώστε μια αλλαγή συναίνεσης πριν αποθηκευτεί το πρώτο συμβάν να μη χάνεται. Οι παλαιότεροι διακομιστές απαντούσαν αντί γι' αυτό 404. Οι κωδικοί κατάστασης αυτών των διαδρομών βρίσκονται στις Αποκρίσεις των άλλων διαδρομών εγγραφής.


Ρύθμιση​

Ρυθμίσεις Workspace​

Ρυθμίστε τις συνδρομές στις Ρυθμίσεις > Subscriptions:

interface SubscriptionSettings {
listUnsubscribe?: {
enabled: boolean;
includeMailto: boolean;
scope: 'global' | 'list';
};
bounceHandling?: {
softBounceRetryHours: number; // Window for counting soft bounces
softBounceMaxRetries?: number; // Soft bounces in-window before escalating to hard
resubscribeOnEmailChange: boolean; // Clear the invalid flag when the email changes
};
doubleOptIn?: {
defaultEnabled: boolean;
confirmationEmailTemplateId?: string;
};
bccEmail?: string; // For compliance archiving
}

Συμμόρφωση​

Δικλίδα ασφαλείας υποσέλιδου διαγραφής​

Για να μη σταλεί ποτέ marketing email χωρίς τρόπο opt-out:

  • Compliance footer block - ένα content block compliance_footer (δημιουργείται αυτόματα με λογική προεπιλογή την πρώτη φορά που ενεργοποιείτε το auto-append) περιέχει τη διεύθυνσή σας και συνδέσμους διαγραφής/προτιμήσεων. Αναφερθείτε σε αυτό οπουδήποτε με {{ blocks.compliance_footer }} ή επεξεργαστείτε το στα Content Blocks.
  • Auto-append toggle - Ρυθμίσεις → Subscriptions → «Auto-append an unsubscribe footer when missing». Όταν είναι ενεργό, η διαδρομή αποστολής email προσθέτει το compliance footer σε κάθε marketing email (που φέρει κεφαλίδα List-Unsubscribe) του οποίου το σώμα δεν έχει σύνδεσμο διαγραφής/προτιμήσεων. Λειτουργεί fail-open: δεν μπλοκάρει ποτέ αποστολή.
  • Προειδοποίηση composer - ο composer email καμπάνιας εμφανίζει προειδοποίηση όταν το σώμα email δεν έχει σύνδεσμο διαγραφής, ώστε να το εντοπίσετε πριν την αποστολή. Προσφέρει δύο ενσωματωμένες συντομεύσεις - Add a link (ανοίγει τον editor για εισαγωγή) και enable auto-append footer (μεταβαίνει στη σελίδα Subscriptions) - και μπορεί να απορριφθεί για τη συνεδρία. Όταν το auto-append είναι ήδη ενεργό, γίνεται πιο ήπια σημείωση πληροφοριών, καθώς το footer προστίθεται για εσάς.

Οι λίστες συνδρομών μπορούν επίσης να επιλεγούν σε SMS, WhatsApp και Viber journey nodes (όχι μόνο email), ώστε η πύλη αποστολής ανά κόμβο να παραλείπει επαφές που διαγράφηκαν από αυτή τη λίστα σε οποιοδήποτε κανάλι.

GDPR (Ευρώπη)​

  • Χρησιμοποιήστε double opt-in για χρήστες ΕΕ
  • Αποθηκεύστε κείμενο και timestamp συγκατάθεσης
  • Παρέχετε εύκολη πρόσβαση σε preference center
  • Τιμάτε αμέσως αιτήματα διαγραφής
  • Διατηρείτε audit log όλων των αλλαγών συνδρομής

CAN-SPAM (Ηνωμένες Πολιτείες)​

  • Συμπεριλάβετε φυσική ταχυδρομική διεύθυνση στα email
  • Τιμάτε αιτήματα διαγραφής εντός 10 εργάσιμων ημερών (το Joryio το κάνει αμέσως)
  • Σαφής αναγνώριση εμπορικών email
  • Όχι παραπλανητικές γραμμές θέματος

TCPA (Ηνωμένες Πολιτείες - SMS)​

  • Λάβετε ρητή γραπτή συγκατάθεση πριν από αποστολή SMS
  • Τιμάτε άμεσα τα keywords STOP
  • Παρέχετε οδηγίες opt-out στα μηνύματα
  • Το Joryio χειρίζεται αυτόματα: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, REVOKE, OPTOUT, OPT OUT, OPT-OUT (το πάντα ενεργό αγγλικό σύνολο βάσης), καθώς και τοπικοποιημένες προεπιλογές (π.χ. Hebrew הסר) και τυχόν προσαρμοσμένα keywords που προσθέτετε

Χειρισμός SMS και WhatsApp Keywords​

Το Joryio επεξεργάζεται αυτόματα εισερχόμενα keywords, αντιστοιχίζοντάς τα χωρίς διάκριση πεζών/κεφαλαίων και στίξης (Stop, STOP!, " stop " μετρούν όλα). Το STOPALL είναι το μόνο ενσωματωμένο opt-out για όλο το κανάλι (μαζί με τυχόν προσαρμοσμένα keywords opt-out για όλο το κανάλι που ρυθμίζετε). Κάθε άλλο keyword opt-out περιορίζεται στην ομάδα συνδρομών ανά αριθμό / ανά WABA στην οποία έφτασε το μήνυμα και το START επανεγγράφει την ίδια ομάδα αριθμού/WABA. Για το πλήρες σύνολο - αγγλικό σύνολο βάσης (με REVOKE / OPTOUT), τοπικοποιημένες προεπιλογές και προσαρμοσμένες προσθήκες - καθώς και τον κανόνα επανεγγραφής, δείτε Keywords παραπάνω.

SMS

KeywordΕνέργεια
STOP, UNSUBSCRIBE, CANCEL, END, QUIT, REVOKE, OPTOUT, OPT OUT, OPT-OUTOpt-out από την ομάδα του αριθμού λήψης
STOPALLOpt-out σε όλο το κανάλι (κάθε αριθμός)
START, YES, UNSTOP, SUBSCRIBE, OPTINΕπανεγγραφή στην ομάδα του αριθμού λήψης
HELP, INFOΑποστολή μηνύματος βοήθειας
Τοπικοποιημένες προεπιλογές (π.χ. הסר, PARE, ARRET) + προσαρμοσμένες προσθήκεςΊδια ενέργεια με την κατηγορία τους παραπάνω

WhatsApp

KeywordΕνέργεια
STOP, UNSUBSCRIBE, CANCEL, END, QUIT, OPTOUT, OPT-OUTOpt-out από την ομάδα του WABA λήψης
STOPALLOpt-out σε όλο το κανάλι (κάθε WABA)
START, UNSTOP, SUBSCRIBE, YES, OPTIN, OPT-INΕπανεγγραφή στην ομάδα του WABA λήψης

Τα εισερχόμενα webhooks επαληθεύονται με υπογραφή - τα πλαστά STOP / START απορρίπτονται και πάροχοι που δεν υποστηρίζουν επαλήθευση εισερχόμενης υπογραφής απορρίπτονται για εισερχόμενα keywords. Αν η ομάδα ανά αριθμό / ανά WABA δεν μπορεί να επιλυθεί, το opt-out εφαρμόζεται με ασφαλή αποτυχία σε όλο το κανάλι.

Το εισερχόμενο SMS webhook ρυθμίζεται στους αριθμούς σας κατά το onboarding - τα keywords επεξεργάζονται αυτόματα.


Βέλτιστες πρακτικές​

  1. Χρησιμοποιείτε πάντα κεφαλίδες List-Unsubscribe - βελτιώνει την παραδοσιμότητα και το Gmail εμφανίζει κουμπί διαγραφής.

  2. Εφαρμόστε double opt-in για marketing - καλύτερη ποιότητα λίστας και συμμόρφωση.

  3. Παρακολουθείτε ποσοστά bounce - υψηλά ποσοστά bounce βλάπτουν τη φήμη αποστολέα.

  4. Δημιουργήστε τμήματα βάσει κατάστασης συνδρομής - στέλνετε μόνο σε χρήστες με opt-in.

  5. Κάντε τη διαγραφή εύκολη - ένα κλικ, χωρίς απαίτηση σύνδεσης.

  6. Διατηρείτε audit logs - απαιτούνται για συμμόρφωση και βοηθούν σε διαφορές.

  7. Δοκιμάστε το preference center - βεβαιωθείτε ότι οι χρήστες μπορούν εύκολα να διαχειρίζονται προτιμήσεις.

  8. Χρησιμοποιήστε διαγραφή ανά λίστα - επιτρέπει στους χρήστες να παραμένουν εγγεγραμμένοι σε ορισμένο περιεχόμενο.


Αντιμετώπιση προβλημάτων​

Συνήθη ζητήματα​

Τα email δεν αποστέλλονται

  • Ελέγξτε αν ο χρήστης έχει κατάσταση unsubscribed για το κανάλι email
  • Ελέγξτε αν το email έχει επισημανθεί ως μη έγκυρο λόγω bounces
  • Επαληθεύστε την κατάσταση bounce στο προφίλ χρήστη

Η διαγραφή δεν λειτουργεί

  • Ελέγξτε τη λήξη token (προεπιλογή 90 ημέρες)
  • Επαληθεύστε ότι η υπογραφή token είναι σωστή
  • Ελέγξτε το audit log για σφάλματα

Το bounce δεν επεξεργάζεται

  • Επαληθεύστε ότι το URL webhook έχει ρυθμιστεί σωστά στον email provider
  • Ελέγξτε τον έλεγχο ταυτότητας webhook
  • Ελέγξτε τα error logs

Debugging​

Ελέγξτε την κατάσταση συνδρομής:

# API call
curl -X GET "https://api-eu1.joryio.com/api/subscriptions/contacts/{userId}" \
-H "Authorization: Bearer {token}"

Δείτε το audit log:

curl -X GET "https://api-eu1.joryio.com/api/subscriptions/contacts/{userId}/history" \
-H "Authorization: Bearer {token}"

Τοπικοποιημένες προεπιλογές (ενεργές από προεπιλογή, προσθετικές)

Συνηθισμένες λέξεις opt-out / opt-in / βοήθειας σε άλλες γλώσσες αναγνωρίζονται εξαρχής, ώστε μια επαφή να μπορεί να επιλέξει opt-out στη δική της γλώσσα. Παραδείγματα:

ΓλώσσαOpt-outOpt-inΒοήθεια
Hebrewהסר, הסרה, עצור, ביטול, הפסקהתחל, הצטרף, כןעזרה, מידע
SpanishPARE, BASTA, CANCELAR, ALTOSI, ALTAAYUDA
FrenchARRET, ARRÊT, DESABONNEROUIAIDE
GermanSTOPP, ABBESTELLENJAHILFE
PortuguesePARAR, SAIR--

Προσαρμοσμένες προσθήκες (ανά οργανισμό)

Στις Ρυθμίσεις → SMS / Subscriptions μπορείτε να προσθέσετε δικά σας keywords opt-out, opt-in και βοήθειας (καθώς και δικά σας keywords opt-out για όλο το κανάλι). Το σύνολο βάσης και οι τοπικοποιημένες προεπιλογές εμφανίζονται μόνο για ανάγνωση δίπλα στην επεξεργάσιμη προσαρμοσμένη λίστα, επομένως διαχειρίζεστε μόνο τις προσθήκες σας. Τα SMS keywords ρυθμίζονται σε επίπεδο οργανισμού. Ισχύουν για όλους τους χώρους εργασίας του οργανισμού, γι' αυτό η αλλαγή τους απαιτεί το δικαίωμα επιπέδου εταιρείας org_settings:write· τα μέλη χώρου εργασίας χωρίς αυτό βλέπουν τη λίστα μόνο για ανάγνωση.

WhatsApp

ΤύποςKeywords
Opt-outSTOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, OPTOUT, OPT-OUT
Opt-inSTART, UNSTOP, SUBSCRIBE, YES, OPTIN, OPT-IN

Μόνο το STOPALL ισχύει για όλο το κανάλι· κάθε άλλο keyword opt-out παραπάνω περιορίζεται στην ομάδα ανά αριθμό / ανά WABA. Το ίδιο ισχύει για τυχόν προσαρμοσμένα keywords opt-out για όλο το κανάλι που ρυθμίζετε για SMS - συμπεριφέρονται όπως το STOPALL, ενώ τα συνηθισμένα keywords opt-out παραμένουν περιορισμένα στον αριθμό όπου έφτασε το μήνυμα.

Πώς η αντιστοίχιση ανέχεται «de minimis» παραλλαγές​

Η εισερχόμενη αντιστοίχιση δεν επηρεάζεται από πεζά/κεφαλαία ούτε από στίξη/κενά, σύμφωνα με την καθοδήγηση CTIA ότι μικρές («de minimis») παραλλαγές πρέπει να τιμώνται. Πριν από την αντιστοίχιση, κανονικοποιούνται τόσο η πρώτη λέξη όσο και ολόκληρο το σώμα μηνύματος: αφαιρούνται η περιβάλλουσα στίξη και τα κενά και τα γράμματα ASCII μετατρέπονται σε κεφαλαία. Επομένως τα Stop, STOP!, " stop " και STOP. μετρούν όλα ως STOP.

Η κανονικοποίηση είναι ασφαλής για μη ASCII - τα Hebrew, Arabic και άλλα συστήματα γραφής δεν έχουν πεζά/κεφαλαία, άρα περνούν αμετάβλητα (הסר παραμένει הסר). Αφαιρούνται μόνο η περιβάλλουσα στίξη και τα κενά.

Επανεγγραφή μετά από opt-out​

Ο τρόπος επιστροφής μιας επαφής εξαρτάται από τον τρόπο με τον οποίο επέλεξε opt-out:

  • Έστειλε STOP (ή άλλο keyword opt-out). Η επαφή μπορεί να στείλει START (ή άλλο keyword opt-in) από το ίδιο τηλέφωνο, κάτι που αίρει τη διαγραφή για τον αριθμό. Μπορείτε επίσης να επανεγγράψετε ρητά μόνο αυτή την επαφή - μέσω του API, ενός SDK, της σελίδας επαφής, της δικής της σελίδας προτιμήσεων ή φορμών, ή μιας εισαγωγής με επιλεγμένο το "Override unsubscribes"· δείτε Επαφές που μοιράζονται email ή τηλέφωνο. Στο SMS, ο πάροχος (π.χ. Twilio) συνήθως κρατά δικό του μπλοκάρισμα στον αριθμό, που κανένα API δεν αίρει: μέχρι η επαφή να στείλει START, ο πάροχος μπορεί να συνεχίσει να απορρίπτει τα μηνύματά σας.
  • Συγκατάθεση από κατάστημα. Μόνο στις περιπτώσεις της ενότητας Συγκατάθεση μάρκετινγκ από καταστήματα - για παράδειγμα ένας συνδεδεμένος πελάτης που επιλέγει το πλαίσιο μάρκετινγκ στο checkout μετά από διαγραφή μέσω συνδέσμου.
  • Επέλεξε opt-out σε hosted page / preference center → μπορεί να επιλέξει opt-in στον ιστότοπο. Μια επαφή που διαγράφηκε μέσω συνδέσμου ή preference center (όχι με SMS) μπορεί να εγγραφεί ξανά με τον ίδιο τρόπο - π.χ. μέσω {{ resubscribe_url }} ή ενεργοποιώντας ξανά SMS στο preference center.

Προτεραιότητα και ασφαλής αποτυχία​

  • Η καθολική διαγραφή καναλιού υπερισχύει των ομάδων. Μια καθολική διαγραφή καναλιού - π.χ. ολόκληρο το κανάλι SMS ή WhatsApp της επαφής ορισμένο σε unsubscribed - είναι hard kill-switch που υπερισχύει κάθε συνδρομής ανά ομάδα. Αν το κανάλι είναι καθολικά unsubscribed, καμία ομάδα ανά αριθμό δεν μπορεί να ενεργοποιήσει ξανά αποστολές προς την επαφή.
  • Ασφαλής αποτυχία σε επίπεδο καναλιού. Αν η ομάδα ανά αριθμό / ανά WABA δεν μπορεί να επιλυθεί, το σύστημα εφαρμόζει την επιλογή opt-out σε όλο το κανάλι, αντί να διακινδυνεύσει συνέχιση μηνυμάτων προς επαφή που προσπάθησε να διαγραφεί.

Ασφάλεια εισερχομένων​

  • Τα εισερχόμενα webhooks επαληθεύονται με υπογραφή· πλαστά μηνύματα STOP / START απορρίπτονται.
  • Πάροχοι που δεν υποστηρίζουν επαλήθευση εισερχόμενης υπογραφής απορρίπτονται για εισερχόμενα keywords.
Ένας αριθμός ανήκει σε έναν χώρο εργασίας

Ένας αριθμός αποστολής - αριθμός SMS, αριθμός WhatsApp ή αποστολέας Viber - μπορεί να συνδεθεί σε έναν μόνο χώρο εργασίας στον οργανισμό σας. Άλλοι οργανισμοί δεν επηρεάζουν ποτέ τους αριθμούς σας: ένα εισερχόμενο μήνυμα αντιστοιχίζεται μόνο με τους αριθμούς του οργανισμού του οποίου ο λογαριασμός παρόχου το έλαβε, και οι αριθμοί WhatsApp επιβεβαιώνονται με τη Meta κατά τη σύνδεση. Η σύνδεση ενός αριθμού που είναι ήδη συνδεδεμένος αλλού απορρίπτεται· αποσυνδέστε τον εκεί πρώτα. Τα εισερχόμενα STOP, START, HELP και οι απαντήσεις εφαρμόζονται στον χώρο εργασίας στον οποίο ανήκει ο αριθμός, και ένα μήνυμα που παραδίδεται για διαφορετικό χώρο εργασίας απορρίπτεται αντί να γίνει εικασία. Τα αλφαριθμητικά ονόματα αποστολέα δεν μπορούν να λάβουν απαντήσεις, οπότε δεν περιορίζονται έτσι.

Οι αριθμοί SMS σε λογαριασμό Twilio ή Vonage επιβεβαιώνονται με τον ίδιο τρόπο: ο πάροχος πρέπει να εμφανίζει τον αριθμό στον συνδεδεμένο λογαριασμό, αλλιώς ο αριθμός δεν συνδέεται. Οι αριθμοί σε άλλους παρόχους δεν μπορούν να επιβεβαιωθούν και σημειώνονται Δεν επαληθεύεται - ο κανόνας του ενός χώρου εργασίας παραπάνω εξακολουθεί να ισχύει γι' αυτούς.

Οι διαγραφές στο τηλέφωνο ακολουθούν τον αριθμό μέσα σε έναν χώρο εργασίας, όπως οι διαγραφές email ακολουθούν τη διεύθυνση: μια διπλή επαφή με τον ίδιο αριθμό σε αυτόν τον χώρο εργασίας αποκλείεται επίσης, και ένα START αίρει τον αποκλεισμό μόνο στον δικό του χώρο εργασίας.

Τα αλφαριθμητικά ονόματα αποστολέα δεν μπορούν να λάβουν STOP

Μια ομάδα ανά αριθμό λειτουργεί μόνο σε αποστολέα που μπορεί να λάβει απαντήσεις. Ένας αριθμός τηλεφώνου είναι αμφίδρομος - οι παραλήπτες μπορούν να απαντήσουν, επομένως λειτουργούν τα STOP / opt-out. Ένα αλφαριθμητικό όνομα αποστολέα είναι μονόδρομο - οι παραλήπτες δεν μπορούν να απαντήσουν, άρα τα keywords STOP / opt-out δεν λειτουργούν σε αυτό. Η διαθεσιμότητα αλφαριθμητικών ονομάτων αποστολέα εξαρτάται από τη ρύθμιση του παρόχου SMS.