Untitled
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'); } }
Leave a Comment