Untitled
unknown
plain_text
9 months ago
2.1 kB
4
Indexable
import { contacts } from 'wix-crm-backend';
import wixData from 'wix-data';
export async function getOrCreateContact(email) {
try {
console.log('Checking if contact exists for email:', email);
// Query Wix CRM for an existing contact
const existingContact = await contacts.queryContacts()
.eq('emails.email', email)
.find();
if (existingContact.items.length > 0) {
console.log('Contact already exists:', existingContact.items[0]);
return existingContact.items[0];
} else {
console.log('Contact not found, creating new contact');
// Create new contact
const contactInfo = {
emails: [{ email: email }],
subscriptionConsent: {
consent: true,
subscriptionType: 'MARKETING'
}
};
const newContact = await contacts.createContact(contactInfo);
console.log('Created new contact:', newContact);
// Subscribe to newsletter
await subscribeToNewsletter(email);
return newContact;
}
} catch (error) {
console.error('Error in getOrCreateContact:', error.message);
throw new Error('Failed to create or retrieve contact');
}
}
async function subscribeToNewsletter(email) {
try {
console.log('Checking if email is subscribed to the newsletter:', email);
// Check if the email already exists in the newsletter database
const newsletterList = await wixData.query('NewsletterSubscriptions')
.eq('email', email)
.find();
if (newsletterList.items.length === 0) {
// Insert new subscription
await wixData.insert('NewsletterSubscriptions', {
email: email,
subscriptionDate: new Date(),
status: 'subscribed'
});
console.log('Successfully subscribed to the newsletter');
} else {
console.log('Email is already subscribed to the newsletter');
}
} catch (error) {
console.error('Error in subscribeToNewsletter:', error.message);
throw new Error('Failed to subscribe to the newsletter');
}
}
Editor is loading...
Leave a Comment