Google Doc

You might find the Google Doc for this meeting (from which the notes are copied) to be easier to consume and to include additional detail (e.g. comments) not present in this issue. If this meeting hasn't happened yet, find and add to the agenda in that doc anytime before the meeting.

Member Platform Meeting

March 12, 2026 at 10:00am CDT

Meeting Notifications, Agendas, Past Notes, Slack Channel

See [Meta] Member Platform meetings

Who is here?

Include your Drupal.org username in parentheses if you have one.

  • JD Leonard (jdleonard)
  • Erica Stevenson (speckles)
  • Scott Wolpow (scottwolpow)
  • James Shields (lostcarpark)
  • Steve Ayers (bluegeek9)
  • Rich Gerdes (richgerdes)
  • Adam John (mradamjohn)
  • Luke McCormick (cellear)
  • Norah Schrum (teknorah)
  • Eric Wheeler (sikofitt)

What Topics Should We Discuss? / Limited Human Notes

  • Recording
  • Quick introductions
  • DrupalCon Chicago planning
    • BoFs
    • Contribution Day
      • Opportunity for mentored contribution
      • Define novice issues
  • Track statuses and next steps
  • Coworking time following the meeting
    • CRM Activity (concept)
      • https://www.drupal.org/project/message
      • Examples of activity that could be logged:
        • Contact CRUD
        • Relationship CRUD
        • Mapped User activity
          • Logged in/out
          • Content CRUD
        • Case activity
        • Membership activity
        • Emails sent, bounced
    • CRM Bulk Email
      • https://www.drupal.org/project/easy_email
      • https://www.drupal.org/project/bounce (to be taken over)
      • Provide a way for the sender to specify whether the email is marketing or transactional in nature – affects legal compliance requirements (e.g. unsubscribe link)
      • Do we need a content entity per email sent?
      • Email service providers like Sendgrid provide mechanisms to provide metadata about an email that is sent, which is included in bounce notifications (e.g. delivered by web hook)

Action Items

  • Scott to schedule a meeting to discuss email-related requirements

Fathom AI Summary

VIEW RECORDING - 120 mins (No highlights)

Meeting Purpose

To sync on Member Platform and CRM development, focusing on DrupalCon Chicago planning and key feature tracks.

Key Takeaways

Topics

DrupalCon Chicago Planning

Event Management & Registration

Composing & Sending Emails to Members

Membership Tracking & CRM Core

Next Steps

Action Items

  • Cancel Zoom for DrupalCon Chicago contribution day; announce Slack-based async contribution - WATCH (5 secs)
  • Coordinate novice issues for DrupalCon Chicago; triage/mark suitable issues - WATCH (5 secs)
  • Draft volunteer-slot approach for kayak group; schedule review w/ Rich - WATCH (5 secs)
  • Schedule email follow-up w/ JD, Rich, Steve, Luke; post scope/times in Slack - WATCH (5 secs)
  • Research CRM Commerce integration; propose approach - WATCH (5 secs)
  • Check w/ Bob re: OnePageCRM licensing; report back - WATCH (5 secs)
  • Add deals/sponsorships to OnePageCRM migration API - WATCH (5 secs)

Fathom AI Transcript

VIEW RECORDING - 120 mins (No highlights)

@1:27 - JD Leonard

Good morning, Erica. Good morning, Steve.

@1:33 - Erica Stevenson

Oh, good morning. So I'm going to be largely listening in, at least for the first part of the meeting.

I've got an appointment at 1130, but I can still listen in while I'm not at the appointment. Sounds good.

Thank you.

@1:52 - Scott Wolpow

Morning. Morning, Scott.

@1:55 - JD Leonard

How's it going?

@1:57 - Scott Wolpow

All right. How was the meeting? What yesterday?

@2:01 - JD Leonard

It was good. We'll dive in a little more today.

@2:06 - Scott Wolpow

I was trying to finish up the pain in of installing Civi 6.101 into Drupal. It's just like an backwards way of doing it.

Well, any particular reason why?

@2:23 - Erica Stevenson

I'm curious.

@2:25 - Scott Wolpow

Well, because unlike every other module that you just go in, use Composer, the enable, you can't. You've got to use Composer to put it in, then you have to go command line or go through install function and it turns itself on.

And there's no way of turning a Civi CRM off. It's there forever. It installs core, it installs core and theme, and you can't uninstall core because it says theme needs it.

You can't uninstall theme and it says core needs it. it. You can't So the only way of doing is to go through the database to remove it if you ever want to extract it.

And it still doesn't like to remove it. So let's leave it there somewhere because it also puts it into a configuration blob.

So, I hate Sivvy. It is poorly designed. It tries to muscle in on everything. Someone else I know is using WordPress, the same thing.

It tries to force their plans onto everything else.

@3:31 - Erica Stevenson

I know trying to design a well-behaved modules kind of definitely takes some forethought.

@3:38 - Scott Wolpow

Well, it's really a, almost another standalone website that's shoved into another system. It's designed for politicians and charities to raise money.

I have a client who loves it, it's the best thing to run every website. He has no clue how it really works, and he takes a hammer to it and tries to smash things into it.

Reminds me of years ago, when I was doing jewelry business, I said, can I do APIs in your database?

And just says them, no, they know what that was, and they were having problems with their database, exporting what they wanted, so let me take a look.

They're using Oracle database for enterprise level, and rather than building a new database, they just used the tutorial database, like the wind towers, wherever it's called, and just adapted that for that.

So there were so many mistakes, and whoever built it didn't really understand the data. They put length and width for a chain into the same column.

@4:50 - Erica Stevenson

Sounds brutal. It was.

@4:57 - Scott Wolpow

So, I finally got up and running. you. you. You know why that would happen, though, Scott, right? Why?

@5:06 - aj

Well, there's a business constraint for it, so length and width are a requirement for whatever they're measuring.

@5:12 - Scott Wolpow

So they always have to have length and width so they put the data together. Yeah, they also put, use SS for storing silver and stealing steel.

It's really, they finally fixed it a few years later, and they actually thanked me from, saw me. They said, the person who was working with me took all my recommendations, and they used that to build an entire e-commerce platform for their customers.

They had no, whoever it was had no idea what they were doing. They were guessing. I offered to go, so they fly me out there, and they don't have to pay me.

Just fly me out there and pay my expenses for the week, and I helped rebuild their database in the proper way.

And they didn't want to do that because the person charged the database didn't want his wife, you know, disrupting.

But no, I know of other companies, the jewelry business, they put everything in the proper place.

@6:07 - JD Leonard

So I think, why don't we get started here? Good morning, everyone. Welcome. I think we all know each other, so we can skip over the introductions and go on to DrupalCon Chicago Planning.

I will encourage everybody to please add your name to the meeting notes, which are linked in the Zoom chat, also in the Slack channel.

So DrupalCon Chicago Planning. So I know a bunch of you are going to be in DrupalCon Chicago, and maybe some also are not.

Looking forward, we have our next Zoom meeting scheduled for during contribution time, I think, in Chicago. What are people's thoughts on that meeting?

Should we... Should cancel it, focus on contribution? Should we schedule an in-person meeting during BOF windows on Monday, Tuesday, or Wednesday?

What are people like?

@7:17 - aj

What about, I don't know what the venue is like, but having a virtual combined with in-person might make sense.

Live coding is the first example I thought of when you were talking, but I think there's other opportunities there as well, possibly.

@7:36 - JD Leonard

Yeah, I wonder, I mean, during contribution time is almost like a, it's almost a different thing, right? Like, do we want to, I guess my question is, do we want to have a meeting as a BOF?

It is a very different thing, yeah. Do we want to have a meeting as a BOF on Monday, Tuesday, or Wednesday, either in-person or hybrid?

And what do we want to do during contribution time? Involving people who are not there and involving people who are there.

@8:03 - steven.ayers

Isn't there an existing Bird of the Feather event for groups.drupal.org or something?

@8:12 - JD Leonard

There is, but I don't know how relevant that is.

@8:18 - aj

I'll follow along, but I'm not going to be there, so it's not really a topic I need to engage on.

Fair enough.

@8:27 - steven.ayers

I feel like people who are going to be at the groups.drupal.org would have an interest in CRM. And so I don't know if it's worth having multiple events or Bird of Feather events if there's such a strong board.

Oh, wow, it's the same 80% of the people in the last meeting.

@8:49 - Rich Gerdes

Yeah, it sounds like there definitely should be a presence from this. I think there should definitely be a presence from our community.

For our project at.

@9:03 - JD Leonard

I agree, and I would say my gut instinct is that we should have a member platform Fath to attract people who don't know what member platform is, right, and have a discussion with them.

And we should have one for CRM more explicitly, same reasoning.

@9:26 - Rich Gerdes

Yeah, mean, groups.drupal is specifically Drupal community management, where member platform is community management outside of Drupal, like using Drupal, but for non-Drupal organizations, right?

So it's definitely a broader group, theoretically.

@9:45 - steven.ayers

Theoretically, we're considering trying to present it at WordPress camps for them to use to organize their own camps with Drupal.

@9:55 - Rich Gerdes

Exactly, yeah, it's not Drupal-specific. It's not for Drupal users. There's a lot. lot

@10:05 - JD Leonard

And on Contribution Day, I don't know, I feel like it's harder to focus on the people who are there in person while also trying to focus on people who are not.

@10:18 - Rich Gerdes

I would say for Contribution Day, the other thing is also a lot of people don't stay around for Contribution Day.

So if you're going to have a meeting, you could have an in-person meeting on Thursday, but people probably have some people left.

ACTION ITEM: Cancel Zoom for DrupalCon Chicago contribution day; announce Slack-based async contribution - WATCH

I know I'm planning on meeting early Thursday mornings.

@10:35 - JD Leonard

I'm kind of thinking that maybe Thursday is like async Slack contribution time that matches with contribution time in person.

ACTION ITEM: Coordinate novice issues for DrupalCon Chicago; triage/mark suitable issues - WATCH

So we don't have a Zoom meeting that week. Hearing no objections.

@10:58 - Rich Gerdes

It's so...

@11:00 - James Shields

The mentored contribution are apparently going to include selected contrib modules for mentoring contribution. So if there were suitable theorem or issues, we could try and get people to look at those.

So I'm not going to be there, but I will be helping with issue triage. So I will be happy to push any suitable issues that way.

@11:39 - JD Leonard

And James, for the benefit of everyone, could you describe what a suitable issue is?

@11:47 - James Shields

It's a good question. So I suppose in general, there are issues that can be marked novice. A lot of the people who would be involved in mentoring or would be...

Participating in mental contribution as new contributors would be people who have a fair bit of Drupal experience, so most of them would be reasonably knowledgeable on the actual ins and outs of developing for Drupal, but a lot of them would just be new to contribution experience.

So a lot of what we're trying to do is get them used to working in the issue queue and finding issues that people can, we're not necessarily trying to get an issue finished, we're just trying to get people making a contribution on an issue and kind of, if we can get people to touch a few issues during the day, then they'll get, you know, if they, if we, first thing we do is get them comment out, I'm at DrupalCon North America.

Contributing on this issue with this mentor, and that sort of basically means that every time that issue gets updated, they'll get an email.

So if we can get people to touch a few different issues during the day, it means that they'll get kind of a series of updates, and that kind of encourages them to come back and continue contributing.

So I suppose, but I mean, it's mainly issues that don't have anything that requires complex domain knowledge, and that's something that somebody who's not, you know, fairly new to contribution can kind of pick up and do something helpful with.

So it might be, you know, it might be sort of something about looking at what the next steps are, or review, or summarizing what's being done, but.

I mean, I suppose if we could, if there are issues, if anybody's looking at CRM, for example, if there are things that you could think of that, rather than just doing them, create an issue and set it as novice and see if anybody picks it up.

But, you know, obviously, if people who have not, you know, there could be people who know nothing about the CRM project or member platform that just pick up an issue as something they can work on on Contribution Day.

And, you know, sort of in a couple of months time, they could be could be a regular contributor to the project.

@14:47 - JD Leonard

Very good. So I think, I don't know, maybe in our co-working time after this meeting would be an opportunity to just do a quick pass and see if we can identify or.

Create any issues targeting that audience. feel like that could be a useful use of time. All right. Anybody have anything else about DrupalCon Chicago?

@15:18 - steven.ayers

Isn't somebody, like, doing some sort of, like, non-government or non-profit session? Isn't somebody, like, facilitating that?

@15:25 - JD Leonard

I am facilitating a breakout discussion at the non-profit summit, which is on the Monday. And that was originally submitted as to talk about CRM.

I'd like to make sure, you know, that was part of it. But it got kind of re-framed as building a discussion around building...

I don't know the right terminology, but it's, like, building functionality. Really quickly, like quick functionality you can build with Drupal, I think.

So obviously CRM will come to pass as part of that discussion. But yeah. All right. Let's move on to track statuses and next steps.

So for event management and event registration, we had a call yesterday at a call with Scott and Rich. Rich, do you want to give an overview or do you want me to?

@16:35 - Rich Gerdes

I mean, I can do a quick overview and you can add to it if you want. I guess we kind of talked about the overall MVP plans for events with member platform and CRM and sort of the in-progress work, trying to get an idea of how to implement that.

We were talking a little bit more in depth about how to implement. in to implement that. Not as part of the MVP, but as part of the long-term about implementing commerce piece of ticketing, right?

Purchasing event registration and how to do that with commerce. You know, the pros and cons of different strategies there.

You know, right now, there is a registration commerce module that lets you purchase registrations. But typically, those registrations come in the form of a commerce product, which is complicated.

And there's also, similarly, for, like, membership subscriptions, like a commerce license module. And then there's another module we talked about, oh, the CRM membership commerce, which also leverages products in order to create that purchasable thing.

And, you know, we're just talking about that in the scope of event management. And how to handle the concept of a ticket, right?

How do you purchase a spot at an event for our long-term strategy? I've done that in the event ticket module by adding another custom entity type, and we're trying to decide if that was worthwhile or if using products was the right approach there.

And I think there's some pros and cons that we still have to figure out for that. But that's not part of the MVP.

The MVP's focus is mostly the ability just to register for an event. And if you're a new person, create that CRM member record along the way.

So I think that's sort of the plan there. Going forward, anything else to add, JD?

@18:41 - JD Leonard

Yeah, I think just, you we talked about the event module being the basis for event functionality, right? For things that are done in Drupal and maybe trying to build a bit of an ecosystem around event, just like we're building an ecosystem around CRM.

um And, you know, in a nutshell, right, the event module, you know, latest branch of that, right, provides an event entity type.

So you can have fieldable events of different types. And so we need to do some things to get that module kind of, I guess, ready for primetime now for use with CRM things.

And then there's the entity registration work that Rich is working on, right, generalizing entity registration so that it can support CRM contacts as registrants of events.

Scott? Yeah.

@19:40 - Scott Wolpow

So on my roadmap for my kayak group as a volunteer coordinator, I want to try and build a system to track volunteers and, you know, what the skill sets, when they plan, what time is available, what events are planned to do.

So it's insulated. So what we're going to have kayaking and rowing. Well, you know, starting in May, it's October, and we try and get them to get people to volunteer, and we're going track when they show up, if they don't show up, and they commit to, so we know how to deal with them, and we also have shifts, you know, like two four-hour shifts, or based on the trip.

How do we, how do I build that into the ecosystem where it's flexible, and is that tying to events, which are not really, no one really registers, except for volunteers?

Or some events, some events actually have changed. Any non-walk-up events, people need to register, there's a limited amount of people, like if we go around Roosevelt Islands, or Manhattan Islands, we limit the amount of people going on that.

Yeah, absolutely.

@20:50 - Rich Gerdes

Yeah, mean, so one of the things that registration supports is registration capacity, right? The ability to limit the number of people.

So I that covers sort of your capacity problem question, right, where you say, oh, we only want 25 people to be part of this trip or this, you know, event that we're hosting.

From a volunteer perspective, this is something that we briefly discussed, JD and I, about the history of the event, the volunteer and like history of interactions and like when you saw people from a CRM perspective.

Which we didn't dive super deep into yesterday, but the idea of like, you know, I met this person at this event or this volunteer was here at this event is an interesting concept.

I think the event module can definitely be used for that. think we have to talk about the glue that would be that relationship tracking within CRM and how that would work.

But also, I think the question about volunteer assignment is an interesting one. And I know. My plan with event registration, but also with the registration, the port of registration is to make sure you can support different types of registrations per entity.

So the concept of a generic volunteer is covered there. think the question ends up being volunteer slots is really an interesting concept, which I think I would do through like some events, which is not something that we've really talked about.

ACTION ITEM: Draft volunteer-slot approach for kayak group; schedule review w/ Rich - WATCH

But I'd be happy to work through with that with you, Scott, sometime and see the best way to structure that.

But yeah, basically I'd have an event for each time slot that you would want to have someone volunteer and then a limit to the number of registrations of who can register for those slots, maybe.

But interesting idea.

@22:47 - Scott Wolpow

Definitely have think through it a little bit. And we'll also give them points for what they do, and we'll probably wait them for the unpleasant things, which is usually packing up at the end of the day.

It's like at end of the day, everyone just vanishes, and then like four people have to pack everything up after working eight hours.

@23:08 - Rich Gerdes

Yeah, who are your, yeah, volunteers, you know, are putting in the effort versus just showing up for the fun thing.

@23:15 - Scott Wolpow

In my first kayak group, when I led trips, I commenced that by keeping the gates locked so I couldn't get out.

Hey, Scott, I just want to keep us on topic.

@23:24 - JD Leonard

Nick, for events and with what you brought up, Scott, I guess the question is, are there other next steps that we need to discuss or define?

@23:37 - Scott Wolpow

Well, would that be a separate module or that's part of events?

@23:45 - Rich Gerdes

I think the concept of a sub-event is definitely in scope for events. That's the idea of, so like, I think the question is, for a more specific use case, don't managing volunteer slots is part of our MVP use case for.

@23:59 - Scott Wolpow

Okay.

@24:00 - Rich Gerdes

member platform, but that doesn't mean we can't work on that as a secondary module for you. think, yeah, it might, it also is probably just a set of configuration for how we set up and input the structure, right?

There might not be very much for a member platform to provide there, but I'm happy to work with you and sort of figure out how to make that happen within your needs, even if it's not part of the MVP.

@24:26 - Scott Wolpow

What's the best way for us to communicate?

@24:29 - Rich Gerdes

I mean, you can message me on Slack or something. can set up a call if you want. We just don't do that.

@24:36 - Scott Wolpow

Sounds good.

@24:37 - JD Leonard

Thanks, guys. Anybody else have anything on events they want to discuss? Okay. Let's move on to composing and sending emails to members.

Anybody want to lead a discussion about what's going on here? There have been some recent discussions, right?

@24:56 - steven.ayers

I mean, are you talking about, like, emails and the same kind of stuff? There have right? Like when a user joins a site, you want to send members an email, like when they join?

@25:06 - JD Leonard

Yeah, I think anything around sending communications to members.

@25:11 - steven.ayers

Well, right there, I think there's a bit of a difference between sending sort of like one-off emails in response to events versus we are going to send all 3,000 members this same form factor, you know, template.

Or, you know, sending emails to all of our donors requesting that they give money for July for the thing, the big thing.

@25:42 - JD Leonard

So Sven opened an issue in the CRM membership module about notification logic for membership renewal. And I will put a link in the meeting notes here.

So people can take a look and comment there. But what I thought might be relevant is I think there's an opportunity, right, to have more of a framework that anything in the CRM ecosystem can rely on to send communications to contacts.

And so I don't know if that might be a separate module or if that would fit in the base CRM project, but just throwing that out there if anybody has any thoughts.

@26:40 - steven.ayers

We need to have a handful of things in place before we could do some sort of bulk emailing. We need to have some sort of bounce processing because if you continue to send emails to nonexistent addresses, that's a spam.

Anything. So in addition to having some way of detecting bounces, we also need to have like a global, not block list so much, but I guess it's a block list, right?

There's that one of those mail hook alter functions. You can alter, I think it's send or sent or something like that to false, and it won't send the email.

So, right, we process bounced emails. We put it in some sort of blacklist somewhere that then gets compared to this, right?

There has to be some way to remove bounced emails. There's also like soft bounce, not soft bounces, but like network issues that you may get back instead of this email doesn't exist, which are more of like, don't send emails to this address for maybe the next six hours kind of issue rather than don't ever do it again.

We have to have a way. It's to unsubscribe people. If you're going to be sending bulk emails, has to be, right?

You can't just, well, I guess you could, but it's a bad results, right? So those things would have to be in place for any sort of bulk mailing.

@28:21 - JD Leonard

Would it be fair to say, Steve, that for a small organization who might not already be using tools that provide that functionality, that maybe they don't strictly need that, they just need something?

@28:39 - steven.ayers

I mean, in terms of like one-off emails, I think the existing Drupal mail system can be leveraged, but any sort of like CRM mailing module is going to want to have at least dependencies, if not provide its own.

@29:03 - JD Leonard

And I guess there's the composition, right? There's the who am I sending email to and what is in the email.

Like, that's kind of one thing. And then there's the transport of, like, how is this mail getting to its destination and then what happens, which is sort of, I think, more of what you're describing.

And I also wonder if there's sort of a, I mean, I guess what I'm thinking is there's a lot of work involved in that balance processing, right, and getting that right.

But I wonder if there's, like, a middle ground of, like, hey, okay, there are third-party services that handle those things, right?

Maybe we do more of an integration with one of those to start as a way to not have to tackle all of the problems at once.

@30:00 - Rich Gerdes

Yeah, mean, I think for the scope of Drupal managing bulk mailing, right, I think that there's a lot of ways to build that into the system.

I do think that the point about, you know, if we talked about GDPR compliance, yeah, the users need to able to unsubscribe from everything, right, that's a requirement.

Now that can be done as part of our email theming layer, right, so I think there's ways to do that on subscription tracking, but that's, you entire thing about, like, transactional emails versus, you know, your membership's expiring, you know, here's a note reminder that that's happening versus mailing list stuff where it's like, this is an upcoming event that you may want to hear about kind of stuff.

And if we're talking about simply, like, transactional, bulk transactional emails of, like, you know, be here, the attendees of this email reminding them the events coming is a scheduled thing that's different than, you know.

The transactional emails. But I think the goal, sounds like, is to support both and maybe prototyping the bulk transactional stuff of, like, who are we mailing when may lead to.

And then we can track the concept of, you know, that subscription instead of being an event notification is actually a mailing list that we can send stuff to manually or something.

don't know. But I think the question ends up being, there's, right now Drupal does have a mail system. There isn't really a good ecosystem for collecting a bunch of records, whether they're nodes or users or contacts, and sending them an email, right?

@31:45 - JD Leonard

Yeah, so we've got a number of things in that space to work through. Is anybody interested in leading that track, that effort within this initiative?

Steve, you're muted. And that's why we need to destroy communism. I'm sorry.

@32:12 - steven.ayers

I'm not sure what that would entail. If we want to already leverage the existing mail delivery systems in Drupal, and you want to send new members emails, do we really need another project to do that, right?

If it's just the transactional ones?

@32:39 - JD Leonard

You mean you're saying this might belong in the base CRM project?

@32:44 - steven.ayers

No, I'm saying like you're just sending mail, like use the core mail system to send mail.

@32:54 - Rich Gerdes

Yeah, I guess from the concept of you've registered for this. So then you finish the checkout process, right? Commerce has events for sending mail, which is your point, right?

Like certain transactional things. Now, a transactional email one day before the event that runs automatically at midnight and sends out a reminder, hey, we're having this event tomorrow, you're RSVP'd for it.

Yeah, we can write the code into the event module or whatever, registration module, whatever it is to do that notification.

Sounds simple enough in theory. I think the real question that you're getting at to an extent is, like, what do we actually need a mail system for, right?

If we're doing email blasts, like mailing list newsletter management, that's a different concept than just notifications of interactions with the platform, right?

@33:53 - JD Leonard

We have said from every platform that we, for MVP, need to support sending marketing emails, basically. Like that We're just sending bulk emails to our members, to our contacts.

We do have to, we can't sidestep that sort of set of requirements, but I do think that we can leverage third-party email service providers as our crutch, right, until Drupal has a solution that supports that, you know, more holistically.

@34:22 - Rich Gerdes

Yeah, and also being on the email, so say you're hosting an event and the event gets canceled, being able to email the attendees and say, sorry, the event's canceled in bulk is definitely a feature that you probably want.

So, yeah, if you're using MailChimp or Constant Contact or something else, or the mail management, being able to sync that set of contacts over there with that flag of these people are attending X, so that you can send them an email.

@34:51 - Scott Wolpow

So, I'm looking at S-E-S to do it.

@34:55 - Luke McCormick

yeah, so, so the, uh, I, I, I. I think we should probably lean harder into the supporting external mail providers, just from, you know, my experience right when I was a TAM at Acquia, and more recently when I was doing lots of things with, at Pantheon, the global mail system is a mess.

Spam is such a huge thing that any attempt you make to kind of engineer it yourself, it is doomed to certain failure, will only result in your system getting blackballed and thrown off.

So, like, on Pantheon, you can't even get, or, I'm actually not sure about Pantheon, but certainly on Acquia, you can't even get, like, password reset.

Emails unless you go through this like very, very careful setting up of things. So I think for our case, we're actually almost all of our actual use cases are, you know, mailing list stuff.

We have to outsource that. It's just going to be an impossible task to try to build on ourselves.

@36:24 - Scott Wolpow

Well, the question becomes, if I click on the name of CRM, can I also see, did this person open the email or not?

Or do we leave that in like SES, Amazon SES, if I'm going use that as my bulk mail provider, do I have go in that module to see the balances?

Or do I see attached to the person's name and see if they open it? That's all important information when you send the blast.

Transactional emails, know, they're not as many as you would have normally, and they don't go out all at once.

So transactions should be handled by a local system, while bulk should be handled by a provider.

@37:09 - Luke McCormick

I just think that the whole thing, you know, it's going to a war zone. Like, I think we're not going to be able to avoid having some things for, you know, in order to get anything out.

We're going to have have some connection to somebody that has, like, full-time staff people fighting that war. Because if you don't, and, you know, I'm dealing with this with SFDUG, is we've been blackballed.

Even just, you know, doing stuff within MailChimp. Just, you know, it's pretty easy to get yourself on, you know, do not send lists and hard to get out.

@37:54 - steven.ayers

So I think that there's two challenges, right?

@37:57 - Rich Gerdes

One is getting around. And. Spam, right? Spam mitigation, right? Which is sending email from our own server is generally a bad idea, right?

And I think we can all agree that that likely will get us blocked if we send too many emails from our own server.

Now, using SMTP gateways, using, you if you have an organization mail service, right? Google or any email provider, right?

If you have, you know, a domain registered with GoDaddy, you can have, they give you an SMTP server you can use for your domain.

It's like, I think that can be solved in a way that isn't our problem as that platform builder. I think to Scott's point about like, lead, like you're talking about from CRM perspective, you want to be able to email your contacts, you want to see when you send that transaction, who opened the email, all that kind of stuff.

And I think the, it may be fine for the MVP to just say, okay, we have MailChimp, we have constant contact, Drupal has integrations with their APIs, we can use that integration to identify these contacts if they've opened stuff based on.

I think we could say that that's sufficient for the MVP. I guess the question is, the long term, do we expect Drupal to be able to replace something like Constant Contact or MailChimp, right?

Is that our expectation? And it may not be for the MVP, but is that something that long term, the RCRM should be supporting?

And that may be a longer discussion outside of this forum today.

@39:26 - steven.ayers

I guess the question would be, what features are involved, other than tracking whether the email is opened or not?

@39:35 - Rich Gerdes

Yeah, mean, that's a big question, right?

@39:38 - steven.ayers

So if we were to use MailChimp, wouldn't we just be integrating with the MailChimp with the base mail system of Drupal, though?

@39:50 - JD Leonard

So I think there are two things, right? Like there's, we just need to be able to send emails, right?

We need a general email service provider for transactions. And then there's the we're sending a marketing email. We need more than just that.

And I think that more involves some insight into the bounces and things like that. But I think there are services that we can leverage that handle the bounce processing and stuff like that.

But there's some level of involvement we would need to have to surface that in CRM so that somebody doesn't have to go to some third party service to understand the bounces and process them and handle them like that.

And I feel like there's probably something we could do that's sort of a generic thing. There's probably an existing generic thing that we can leverage, right?

Framework that can plug into these different services. But we have to figure out what that work is. We have said for member platform MVP, we need to be.

Be able to send out emails to members, like bulk marketing emails. So we need to find some solution to doing that.

I think we're missing the mark if we're saying you must sync your contacts to a third-party service and manage your emails there.

@41:22 - Scott Wolpow

James?

@41:27 - James Shields

Yeah, just a couple of things. Well, first of all, I think we shouldn't be too prescriptive on particularly saying you must use a specific third-party service.

But I think some people might want to do it all themselves, keep it all in-house. There are options. There's a Drupal module, Simple News, which is fairly basic but does support sending out email newsletters.

multiple already. We need all in you're And there's Drupal integration with Mautic, which I think can either be used as a fast service or can be self-hosted and an open source solution, which is kind of attractive to be in our wheelhouse.

And there's things like MailChimp, which, and I know MailChimp sponsor the Drupal module that integrates with it, which is obviously good for ease of use.

But I think if we could have a standard way of kind of integrating with, you know, and maybe we need a layer that does integration with, the Drupal.

Drupal. Drupal. The mail-out system, and perhaps for MVP, we only provide one connector module, but do it in a standard way that could be repeated for other services.

@43:19 - Scott Wolpow

Well, so on my servers, the clients do a monthly blast to the merger of the local. I think the largest one is about almost 1,000.

So far, we've not been blacked this or any other problems because it's almost always select people. not random people who forgot they signed up.

These old people expecting to get this blast haven't had any real problems. But in the past, I've had problems even sending 200, 300 emails out at once.

I'm sure we all know that the system depends on how many are hitting AOL or Yahoo or Gmail. So for MVP, we should have the native system, but how are we going to build, if there's an SES, if there's a MailChimp, how are we going build a connector to go through that system?

I know we did a demo of the MailChimp one a few weeks ago, and that didn't work out too well, and are we just using it to send out, or are we using it to manage the email blasts?

There's a difference between the two.

@44:31 - JD Leonard

So you mentioned two different services, MailChimp and SES. I don't think those are comparable, right? MailChimp does, while they have a transactional thing that's sort of, you know, a separate thing, that's not what we were using, right?

We were syncing contacts between MailChimp and CRM to just use MailChimp to send emails, right? And that's the crutch between what we have now and our MVP.

Feature set. But SES, is my understanding, right, manages, is an email service provider for you give it an email and programmatically it sends it out, right?

And then it handles the bounce processing and things like that, right? We just need, we need to respond to those events, right, that happen, right?

And so I think what we need is, I think we need some, we need to identify the right system that abstracts away for these different third-party email service providers, the processing of bounces primarily, and whatever other information we can ascertain about the deliverability of that email, right?

Like, was it actually, did they actually attempt to send it? Like, did they send the email? Or did it never get sent by the email service provider?

And I think if we have those two things, right, then I don't know, I'm hoping there's an existing. Is there out there that handles that?

@46:01 - steven.ayers

I think there is. There's not. There's nothing?

@46:05 - Scott Wolpow

Well, so there's an older system.

@46:08 - steven.ayers

So I've looked at taking over maybe the... Is it Bounce? I think the namespace is Bounce on Drupal.org. Handling Bounces and then not sending emails to them seems like something that's pretty straight...

Not straightforward, but universal, right? That's something that every site would probably want.

@46:33 - Scott Wolpow

How old is this namespace?

@46:38 - steven.ayers

So, yeah, it's a band band. It looks like it hasn't been updated in more than a decade.

@46:44 - JD Leonard

Yeah.

@46:48 - steven.ayers

So there would be different plugins you would have for the Bounce system to figure out which things had bounced.

And you could take maybe... maybe... I guess there's only really two actions, a hard block and a soft block, and maybe for some particular time, similar to like how the band module works.

You can permanently block or block for a certain number of hours. We'd probably want to include either in the same project or if not in the same project, we'd probably also want to provide something that does balance processing for IMAP.

I mean, I don't really see a reason to do POP3, but...

@47:32 - Rich Gerdes

Yeah, what the Bounce module looks like it does, it connects to an inbox, right? You give it credentials, IMAP, or POP, and it connects and fetches an email, Bounce emails from that inbox, and then you can process them however you see fit, right?

@47:50 - steven.ayers

Well, that would be a plug-in for the Bounce framework, so that handle Bounce is then...

@47:55 - Rich Gerdes

Yeah, exactly. So you have... Maybe that's the default plug-in that it provides is put your SMT... And we had SES or MailChimp or whatever else we want to process as a secondary thing.

I think the question at hand, right, is as far as the main discussion here, I think the question are, what is the goals, right, from a CRM perspective and member platform perspective, do we have a list of requirements for mail management?

And we get that as a list and divide that up and tackle those tasks, right? So say Steve took Bounce, know, Scott took something and I took something and JD took something, we could probably conquer this pretty easily.

But I think the hard part is that we have this huge broad question of like, oh, how do we handle, you know, not sending too many emails out at once?

How do we handle, you know, this? There's a lot of areas to cover here when it comes to email.

We kind of have to divide and conquer and decide how to do that, right? And there's things like MailQ module and, you know, SES and other things that may solve some of these problems.

We just have to figure out what the problems are we're solving and divide up, I think, right? good right.

So Hear, hear.

@49:01 - Scott Wolpow

And for MVP, are we just concerned with outbound for MVP and break it down between nail blast and transactional?

@49:13 - JD Leonard

I think we probably need a follow-up call, right, to make some more progress on this, but I like this initial discussion.

Who would be willing to participate in such a call?

@49:27 - Scott Wolpow

Myself.

@49:37 - Luke McCormick

I'm willing to come by and offer feedback on things, but I can't take more responsibilities at this point.

@49:55 - JD Leonard

So, you know, I also will actually, Hmm. hmm

@50:01 - steven.ayers

I think some of the transactional ones about joining might be able to just be put into CRM membership directly, like the same way there's user registration emails.

@50:15 - JD Leonard

Yeah.

@50:16 - Rich Gerdes

Yeah, I think once we have a solution for the mail process, think we can, I think, yeah, event transactional emails of when you do something, the system can be encoded in Drupal's core system, probably, right?

Like, for something, signing up for something. I think the question is the event, like, last type emails or scheduled future emails, I think I have a question where it's like, oh, you know, after 90 days and this follow-up.

So I'm queuing and executing some of those things, maybe the hard part. But yeah, I think we can talk about requirements and then plan what we need to do, right, before we can really talk about.

So, and some of those might not be MVP things, those might be future work, right? So I'm on vacation next week.

@51:03 - JD Leonard

Do folks want to meet then? Or if they don't, I'll propose a date further in the future. Does anybody want to lead an initial call next week sometime?

ACTION ITEM: Schedule email follow-up w/ JD, Rich, Steve, Luke; post scope/times in Slack - WATCH

@51:20 - Scott Wolpow

I can lead the calls. We've got to find a time that works for everybody.

@51:32 - JD Leonard

Well, I tell you what, Scott, why don't you post in the channel about the scope of the call, schedule, schedule, you know, propose some times and see how it goes.

And we can have a follow-up call later if we need to.

@51:51 - Scott Wolpow

Thank you, Scott.

@51:52 - JD Leonard

So let's, there's a lot to discuss there, right? We could spend the whole meeting on that. But we've got some other tracks to discuss.

Let's go to membership tracking. Steve, you want to just give a quick update about the CRM membership module and what's going on with CRM membership commerce?

@52:14 - steven.ayers

No, I mean, yes. Yes. We do have some code out there for CRM membership, but we have now more questions than answers as far as how to integrate with the rest of the system.

I haven't taken a direct look at CRM membership commerce yet. I'm not sure if there needs to be a more generic integration like CRM commerce.

I know it would be kind of nice to be able to have a tab of all the orders done by a particular contact, but that you enable.

@52:57 - Norah Schrum

Sorry. No, go ahead.

@53:00 - steven.ayers

Say again, Norah?

ACTION ITEM: Research CRM Commerce integration; propose approach - WATCH

@53:01 - JD Leonard

You didn't come through. No, no, no.

@53:02 - Norah Schrum

I was mumbling to myself. Didn't realize I was on.

@53:05 - JD Leonard

Oh.

@53:12 - steven.ayers

So, yeah, I don't know if a CRM commerce module would have the same overlapping features as the membership commerce does or not.

But I'm also not familiar enough with commerce to really speak authoritatively on it. So, stuff for me to research.

@53:32 - Rich Gerdes

Yeah, one of the things about commerce from a structural perspective is that orders get tied to users. Are very, very strictly, it's like a relationship, which is fine, right?

You know, you want to know who placed the order, it's anonymous or a specific account on the website. But some custom logs definitely would need to be done from a CRM perspective to attach the CRM contact to that order when that happens, right?

Thank In order to have a view of, you know, orders by this contact, or even if it's an anonymous user, right, based on email, linking that relationship to the contact.

So there's definitely, I think, some CRM-specific functionality for member platform. In that scope, I think you don't have anything additional.

I think the question ends up being, like, event management is going to have some commerce stuff. You know, we're talking about subscription management, right, like your membership dues payment.

Whatever, or, you know, annual subscription fee, or whatever that is. That's going to require some commerce, but that might not be member platform specific.

It might be member platform, you know, dues, commerce, or something. Who knows, but that'd be my take on that.

@54:50 - James Shields

And just to add to that, that you could potentially have one user registering several people. So, so, so we need.

need to have some way of, kind of.

@55:05 - Rich Gerdes

Yeah, yeah. So registering, yeah, on the registration side, that'll be handled by event registration, or registration in the event model.

@55:14 - James Shields

Yeah, sorry, registration, registering is probably not the best word, but, you know, applying an order. For example, you could have several members being, you know, subscribed, their subscriptions or dues or whatever is being paid for by someone else or one person paying for several people.

So the order would obviously be tied to that user. So it's just kind of linking the, I suppose, the order lines to the contacts is kind of something that would need consideration.

Thank you. you.

@56:02 - JD Leonard

So, good news. Great news is nothing involving commerce is in member platform 1.0 scope. We've purposefully left it out.

So there's so much important work to be done there, but we can kind of let that get back to that a little later because we do have things to get member platform out the door that we must do.

But I do encourage people who are interested in that space to collaborate and get together and, you know, make great stuff happen.

Steve, you want to talk about anything more generally with CRM?

@56:39 - steven.ayers

A lot of migrations going on. I don't have, like, MidCamp's data, but I have a test instance of the same CRM platform that Fox Valley and MidCamp use.

So I don't know if MidCamp's going to migrate to Drew. People CRM, but they have a migration path.

@57:07 - JD Leonard

Norah, you're a representative for MidCamp, aren't you?

@57:11 - Norah Schrum

I'm sorry, what was the question? Fair enough. No, I, yeah, I mean, I'm lead organizer over at MidCamp. I was totally doing other things than just listening to the chatter.

What was the thing you were saying?

@57:28 - steven.ayers

Uh, so how does MidCamp use one page, uh, CRM?

@57:32 - Norah Schrum

Do you use that to send out emails?

@57:34 - steven.ayers

you? Yeah.

@57:37 - Norah Schrum

Yep. Do you use the deal feature in it?

@57:40 - steven.ayers

Do you use custom fields? Uh, yes and yes. What are the deals?

@57:47 - Norah Schrum

Uh, what are the deals? I mean, they're sponsorships.

@57:50 - steven.ayers

Okay. Yeah. And, uh, what about, like, meetings and calls? Do you track stuff in meetings and calls?

@57:58 - Norah Schrum

Uh, no. We're just using it for sponsorships right now. I didn't even think about meetings and calls. I mean, are you saying like using the meetings and oh, I see what you're saying.

Like, there's like a thing you can do where you can plus on a meeting or plus on a call.

No, I can't say that I've used those scheduling features or tracking features so much. I've, I've done mostly notes.

I do like the assignment being able to like assign to other folks. Uh, though I would say that even though we have, uh, working with it, uh, with a like sort of influx membership, uh, year over year, um, it hasn't made sense to create a bunch of accounts underneath our one page CRM.

We like have one shared account, uh, and then we have like an. Admin account or two. And so the assignment feature isn't leveraged as heavily because it's not really attached to a single person.

It's like, you know, you'd assign it to the shared account, I guess, you know, and whoever is leading that year, I don't know.

ACTION ITEM: Check w/ Bob re: OnePageCRM licensing; report back - WATCH

So it's kind of not as intuitive in that way for us, but yeah, pretty much.

@59:22 - JD Leonard

And shared account because of licensing constraints.

@59:25 - Norah Schrum

You know, honestly, I know that we had, um, I'll have to check that again with Bob because I feel like that our licensing might've changed in the last year, but yes, it was a limit at least as of last year, um, that we could only have so many accounts before it would become a paid sort of thing.

But, but I know that we also, uh, they're an in-kind sponsor and we're like getting it, getting some sort of level for free.

I don't know if it's more accounts this year than last year, to be honest, but anyway. Like, are the deals what are being assigned, or is it contacts, or?

It was, yeah, it's kind of strange how, I don't know, maybe there's better ways to do it, but the way that I've been doing it is you go into the contact, because, like, you don't, there isn't any sort of, like, real tracking on the deal itself.

It's the deal is attached to a contact, so all of the note-taking, you know, all of the assignment stuff is all on the contact, which is a little awkward sometimes, because it's not always the same contact that you're going to be communicating with at the organization throughout the deal process.

So technically, the deal is attached to the contact, which is also attached to the organization, and you can still get to it, or reassign the deal to reassess.

associate the deal, like, or make, like, a different person a primary at a certain point. But, yeah, I don't know.

I hope I didn't convolute your question.

@1:01:13 - steven.ayers

My question is only how do you use one-page CRM? Yeah, so I use it from the contact to answer your question.

And if you had the option to migrate to Drupal CRM, how do you think MidCamp would...

@1:01:30 - Norah Schrum

I don't know. That's why I'm here, to...

@1:01:32 - steven.ayers

We have a migration project for one page.

@1:01:37 - Norah Schrum

So, yeah, I mean, I'd be interested to explore that, especially, you know, that it's Drupal. And if it can send the things and track the deals, as a CRM does, and you can have multiple users, I think that that would be an advantage, is being able to have, like...

I don't know. I'll be... Because it's a module, if I understand correctly, we could even potentially tack it on top of MidCamp.org's current event platform.

no, precisely. Yeah, we have a vet platform going on it right now.

@1:02:17 - steven.ayers

CRM is actually installed on Fox Valley website, I guess, or at least Bob says it is.

ACTION ITEM: Add deals/sponsorships to OnePageCRM migration API - WATCH

@1:02:24 - Norah Schrum

Okay.

@1:02:27 - steven.ayers

I don't know if it's doing anything, but it's installed.

@1:02:31 - Norah Schrum

Okay.

@1:02:33 - steven.ayers

We have another project CRM case, which I, like, it's not just support cases, but it's like an incident, right?

So I think maybe it could also work for a deal. Like it would just be, a deal could be like a bundle of that.

But it's good to know that deals are something you use so that I include that in the API and migration.

@1:02:54 - Norah Schrum

Yeah, I think for camps especially, deals are important. to the You know, For sponsorship tracking. I mean, it would be cool to if, I don't know if all camps do this, but I would say that we like to give as many contribution credits as we can to people that are involved.

And that means Drupal.org issues. And so we haven't yet converted or opted in, or, you know, it hasn't, eventually all of us will be converted over to GitLab issues.

But I don't know if it's a wait until GitLab issues, or if it's, you know, just an extra field that we link to literally on a Drupal.org issue.

But that's kind of, that's one piece that I'm doing in OnePageCRM right now, is I'll have a custom field for, I believe it's on the, I can't remember if it's on the org or the contact.

It was on And on one of them, just to have a linking back to the actual Drupal.org issue that folks also that are managing it have to update, basically.

So just a quick interrupt here.

@1:04:16 - JD Leonard

We have reached the technical end of our meeting. We do have a few more tracks to discuss, although I don't know how much we have to discuss there.

And we always have co-working time after the meeting to continue working on whatever. But I did want to check in.

Did anybody have an update for any other track that they wanted to quickly share?

@1:04:43 - steven.ayers

In terms of migrations, we're also working on being able to migrate nodes. And I guess in the future, we're going to work on migrating users.

Which seems a little odd, except I think it would just be the fields. Thank Thank Thank I don't know if that's exciting information for anyone, but I'm excited.

@1:05:09 - JD Leonard

Very good. Well, I will be back in a few minutes or so to continue co-working with anybody who would like to.

In the meantime, I invite anybody to continue their discussions.

@1:05:26 - steven.ayers

So this Drupal.org issue, you've got a link to that issue on either the organization or the contact?

@1:05:35 - Norah Schrum

Yeah, let me just look it up here real quick.

@1:05:38 - steven.ayers

And is that like for sponsoring them or working the sponsorship or I guess?

@1:05:44 - Norah Schrum

Working the sponsorship because we, you know, I want to end up giving the folks that were involved with making that deal happen, Drupal.org credits or whatever.

Whatever. So, contribution credits. Yeah. Let me just bring this up. Sponsor. Sponsors. Okay. I mean, if it's helpful, I can share my screen.

@1:06:21 - steven.ayers

Yes.

SCREEN SHARING: Norah started screen sharing - WATCH

@1:06:29 - Norah Schrum

Do you see my screen? I do.

@1:06:32 - steven.ayers

You won a deal.

@1:06:34 - Norah Schrum

So, yeah, I guess I put the link on the deal for Drupal.org. And then there's also a link, like, to the sponsor page.

And that makes sense because, you know, we want, or it'll be a different issue every year. And we just name the deal, the year, and the name of the organization.

We have We Yeah. The, you know, deal item items that, you know, this in this case, it's the community sponsorship that Canopy has gotten here.

And here's the contact. I don't have an example of like where there's multiple contacts, but you can link multiple contacts under a deal.

That's sometimes useful if you know up front that you're going to have multiple folks that are going to be, you're going to be dealing with.

But as you can see, the deal, like tracking is the only thing you can really do here is item, the links, who's the contact, and then what's the status.

And then under the contact is like where all the emailing happens. So you like literally click on their email.

It brings up this. There's templating involved. When we do send them, let me go ahead and show you the templates.

When we send them a. Like a core sponsorship, for instance, event kit, there's some, what do call it, variables in here that come from the either vContact or the organization level, and it has to do with like number of tickets and things and whatnot.

So we configure that, you know, in other places for our ticketing system, and then kind of dump it into the one page CRM record, and then it will pull it into an email.

But this is, this is definitely, I don't know if we sent an email with this contact here. I think I have an example, though.

Diffie, Uri. Diffie, and I think I just need to open the action stream. So there's an email. So yeah, here's an email that was sent.

And it's basically an integration with our Google Workspace. So it sends on behalf of this sponsor email that we have.

And, yeah, and the templating is, you know, good enough. It's WYSIWYG and it has tokens, you know, basically. So that's pretty much the extent of how we use it.

I hope that's been helpful. Did you want to look at anything else?

@1:09:36 - steven.ayers

Custom fields, just I'm going to have to make some up. So like on the test instance, I have something to test migrating in.

guess I'm just curious which ones you use. Or I guess do you use the anniversary field? Because that one seems weird.

Not weird, but the anniversary field. It's a. Custom field.

@1:10:01 - Norah Schrum

Oh, I don't. It's okay if you don't. Oh, you mean like a similar like a birthday field here? I don't see that.

@1:10:07 - steven.ayers

There's apparently a way to add fields to these entities, not necessarily the same way as Drupal, but not unlike Drupal.

And so one of the custom field types is anniversary, which is different than date, apparently.

@1:10:21 - Norah Schrum

Oh, no, I don't use that. Okay, that's totally All I've added so far was a couple text fields across different things.

there's like the ticket number, ticket URL one, and then on the deal was, you know, those custom fields on the deal as well that I showed you before.

And I'm not showing you the actual like where you add the field, but you can get the idea by looking at the display.

@1:10:48 - steven.ayers

They're just text fields for now.

@1:10:50 - Norah Schrum

Well, actually, I think it converts it. Now I'm curious. Like, what did I do? I don't even know what I did.

Oh. Settings, custom fields, organization fields, so here you go. So I guess the ticket number is a number, ticket URL is single line text.

So it auto converts the text into, if it's a URL in there, to an actual clickable URL. But I'd imagine, you know, a link type would be good as a custom field in general.

So, in Drupal.

@1:11:33 - steven.ayers

So I think we can give you a lot of the stuff you need, but I don't think we're in a position to migrate you for mid-camp 2026, but maybe 2027.

No, I would not even want to do that.

@1:11:46 - Norah Schrum

That's like in two months. Are you kidding me? Exactly. But yeah, I'd be interested to see, like, what we could do to move into CRM, or what that would look like in CRM.

Um, and then... Next year. So, yeah, that'd be cool. And Bob has been around here talking to you guys, it sounds like.

@1:12:08 - steven.ayers

Yeah, he also went down to Florida. I'm in New Lenox, so. Yay, I'm over here in Mokina.

@1:12:18 - Norah Schrum

Good stuff. Awesome. Yeah, I'll stop sharing my screen. Cool. Well, thank you.

@1:12:29 - Scott Wolpow

By the way, one of the things I'll be interested in sooner or later is connecting the CRM to a, like, a Vonage or call system.

@1:12:42 - steven.ayers

That is something I have thought about and how to do that effect, not just how to do it, but how to get it to, like, fit in, right?

You probably want to have some sort of log of that fall and, ideally, maybe an AI transcript or summary.

@1:12:59 - Scott Wolpow

Yeah. I don't I if I'm overthinking it, but most of them have that, most offer those services, and it's, you know, they all offer almost the same service, and most of it by API.

So it depends where you want it to sit is really what matters. You know, the same with the mailing system.

Do you want to click into, go into Amazon to check the bounce rate or MailChimp or Constant Contact, or do you want have one dashboard for everything?

No. To me, the CRM is the heart of the dashboard for a contact-related business. But not everyone needs everything, and so I'm always, the feeling is, start with basics, let people add what they want, rather than have a monolithic thing with tons and tons, add microservices.

Otherwise, it's way too much crap for people to deal with, and the mundanes tend to activate everything. right. All All

@1:14:02 - steven.ayers

Yeah, sounds like a calling feature or module might be, like, I think there could be, like, a format or to put it in the correct format to open up, like, my understanding is that they have, like, a custom protocol prefix, which is how you get the desktop app to open or something.

I don't exactly know. That seems kind of straightforward. It's just, like, maybe a field formatter, but it sounds like tracking the call or some sort of integration to either pull in the transcript or at least link to it would be a separate, I don't know, CRM call, CRM phone.

@1:14:42 - Scott Wolpow

The question becomes, how do we build this so we don't build a connector to each and every single call service out there to make something that, you know, you obviously have to make the call service has to be attached, the module has to be attached.

Like Vonage, or Nextiva, or 8x8, but you have a way for CRM, just connect it and know what it is.

Unless you put in, unless you do it, you're reversed, and you're making, you know, like the SES module for email, how are you going to make CRM know that it exists, a member platform?

If you're going do one, there's no Vonage, are you going build a special Vonage just for that, or one for Vonage in general?

@1:15:33 - JD Leonard

I would imagine that many providers could simply use the TEL protocol, right, T-E-L colon, when you're prefixed that on a phone number and on a link.

You know, if they've got appropriate integration with the browser or the OS, then it should launch the appropriate service.

If you do need a specific one, because they have a specific prefix they need or something to launch their app.

Like Steve said, yeah, it's probably just a field formatter plugin, and that can go in its own module. has nothing to do with, that's not specific to CRM in any way.

@1:16:10 - Scott Wolpow

And then you just need to configure the appropriate field in CRM to use the correct field formatter. So you click on the phone number, and it looks at your desktop or your machine, your device, and say, oh, that's what you want to use to make outbound calls.

But then that doesn't tie into the length of the call, the matters of the call, and you want to record in the CRM.

@1:16:34 - JD Leonard

No, that's very fair, and that sounds like flight and integration.

@1:16:44 - Scott Wolpow

Remember, we always start simple and overly complicated.

@1:16:48 - JD Leonard

That's right. That's our job.

@1:16:51 - steven.ayers

In terms of like an activity tracker, I was thinking of using the message module or the message stack. I don't...

I think I'd want to include it as a dependency, because I don't like dependencies. Maybe a dev dependency or maybe a separate project would be my thoughts on it.

@1:17:16 - JD Leonard

I think I'm a big fan of separate projects because it lets somebody compose the things they want and take on the dependencies they want.

And I think also it helps for maintainability, right? So that CRM can progress without having to worry about what's happening completely in these other projects, right?

As long as the API is kept.

@1:17:47 - Scott Wolpow

Otherwise, I'm not going have launch. It would be like the Edwin Abrams tank, and they've added so much crap to it that it...

It was years delayed and did nothing for anybody.

@1:18:03 - steven.ayers

That take is awesome. Now it is.

@1:18:07 - JD Leonard

But just taking this concept, right, if you have a separate module for CRM activity or whatever it is, right, and then you've got CRM membership, there's obviously activity related to membership.

Is there a CRM membership activity module? Like, is that how it, is that the, like, logical way those pieces fit together so that CRM membership doesn't have a dependency on CRM activity because it doesn't strictly need to?

@1:18:44 - steven.ayers

So this is maybe more of a message architectural thing, but in my mind, it seems like we'd want to have fields available and just reuse the same namespace as the entity.

Thank Thank Thank And have them be entity reference fields. I'm not saying they go on every message, but in terms of being able to, you know, when you create the message, if you put the contacts that are related into the CRM contacts field, the activity stream should just kind of work.

@1:19:22 - JD Leonard

Message, the message stack, which I haven't used in years, I recall was user centric as far as the actor.

But I also recall using it and just ignoring that property.

@1:19:37 - steven.ayers

There is a UID property, but it's not required. There's also some user who's performing the action. So you can still store that if it's relevant.

@1:19:55 - JD Leonard

What you're saying is you have a field on the various message types. That refers to the contacts that it references.

@1:20:03 - steven.ayers

Yeah.

@1:20:04 - JD Leonard

And thus, you have an easy way to query to show a feed of activity related to a contact. Yeah.

@1:20:11 - steven.ayers

So like if a case gets updated and, you know, that's not part of the CRM main project or the message project, but if that message gets created and the correct data gets put in there, it should just show up in the view as expected.

Right. Right. Can you clarify?

@1:20:30 - JD Leonard

You said a case.

@1:20:33 - steven.ayers

I'm just saying something that's like a, I'm just talking about an entity that's not part of the CRM project per se.

Like it's something that extends it. So it doesn't necessarily know what's going on there. I'm sort of waving my hands over how the message gets created because I don't know yet.

But, you know, either the third, either the project that extends this creates it there, or it's done maybe through ECA.

However, those details get worked out, right, the activity stream it should show up in.

@1:21:09 - JD Leonard

And I suppose you could have activity related to a contact, but you could also have activity related to some other thing, right, a relationship, a case, a membership.

@1:21:23 - steven.ayers

They could be multiple things, right, like if you create a relationship, you may want to also include the contacts that are created in the relationship as part of the message, right, that same, right.

@1:21:38 - JD Leonard

It then comes down to how those messages are created, and that's sort of up to either the site builders or the developers or somebody else, I guess.

I'm trying to think of a... It's complicated scenario where you've got like a message that needs to be sent out that has to do with a case involving membership or something.

@1:22:18 - steven.ayers

So we open up a support case because your membership isn't renewing because your credit card is twonky?

@1:22:25 - JD Leonard

There, that's a good one.

@1:22:27 - steven.ayers

Um, I'm going to assume there's probably some sort of bundle to deal with membership issues. I'm just guessing here.

There, there would be some way to reference the membership in the case.

@1:22:44 - JD Leonard

But you would need, you would presumably need, uh, I'm trying to think of like, which, which module is creating that message, right?

If it's, well, is it in response to a case being updated or created? Yes, but CASE presumably does not, out of the box, know about membership.

So how, so it's almost like you need a CRM CASE membership module, right, that provides the glue so that you can create a, have a message type that references both the CASE and the membership or something.

That's what I was talking about the other day and today.

@1:23:26 - Scott Wolpow

How do you make CRM aware of things it doesn't know about? Without having to rebuild that module. So from what I've researched, I could be wrong.

You get, when you build a module, you get to say what you want to be aware of. You want to be aware of CRM, but how do you, how do you make it aware of things it doesn't know about or not even create it yet?

So there's a way of doing that.

@1:23:53 - JD Leonard

So this concept of activity is sort of one, would be one route, right, where you were. there's a of that.

Let's do So there's a Modules in the ecosystem can expose activity in the UI. Otherwise, modules can insert whatever UI they want, right?

Knowing what they know about how Drupal CRM works. But are there other integration points you're thinking of, Scott, or anybody can think of?

@1:24:28 - Scott Wolpow

So to me, one thing I looking at is building something, looks out and finds all the entity objects in Drupal, the base ones.

The only trouble with that is, that would expose passwords and other things that you don't want exposed, and other users, which is a huge security risk.

So how do I make, I build, let's say I go find the SES module, and I install it into my site.

How do I attach that directly to CRM, will say build a module. Or an add-on that allows it to do that.

And then some comes up with another one for Fugazi email, and I want to do that. I can't because CRM doesn't know Fugazi to do email less.

@1:25:17 - steven.ayers

Yeah, I know if there's a real solution there other than to write the code.

@1:25:22 - JD Leonard

Yeah, I mean, yeah, this goes back to our previous discussion around pluggable email service providers, right? If you're using the email service provider to just blindly send email, right, there are existing Drupal modules for various providers that the emails will be sent.

It's really about that bulk email, right, the marketing emails and handling bounces and things like that. And as we discussed, we need to have a full meeting to try to define the requirements for that.

Are there any other examples of, you know, extension? points to CRM that you can envision? what else does CRM need to be aware of that it might not be?

@1:26:08 - Scott Wolpow

CM could be aware of people posting messages, posting blog points, comments. When you say posting messages and blog posts, what do you mean?

So I want to go in and see, okay, what did JD post today on the website as a member?

He was supposed to put some positive posts of the event we had.

@1:26:31 - JD Leonard

Ah, so you're saying, so that's really a user attached, activity of a user attached to a contact.

@1:26:39 - Scott Wolpow

Correct.

@1:26:39 - JD Leonard

As far as what actions they're taking on the site, content related. Correct.

@1:26:45 - steven.ayers

And if we're using message, we can just add that CRM contact field and populate that so that it shows up in the activity stream for that contact.

Right. Right. JD edited this. JD logged in. JD created this node. JD updated it. JD unpublished it, and then he edited the third node.

@1:27:10 - Scott Wolpow

You know, having log in or log out is a good thing if someone didn't pay their membership dues. Oh, I logged in, had trouble.

Well, no, we see that you made no attempts to log in. So I'm to, I want to try to think of things that people might use on the contacts, what they want to track and watch.

And Steve, Steve, you mentioned a message module. What does the message module do?

@1:27:44 - steven.ayers

Message is an entity. It, it's not really meant to be updated. It's meant to be just a record or a message of something having been done.

So some examples are you. Log in, right? Or log out. You create nodes, add a comment, you do this or you do that.

And so you can have an activity stream of either on like a user, what are they doing or what's going on with this particular node or whatever the content entity happens to be that it's being referenced to.

It does some stuff with translations that aren't normal per se, but like when it sends an email, it's supposed to send it in the user's language, although there's a bug about that.

It's not really meant to be updated. They can be configured to remain forever, but there is sort of an assumption that you'd want to have these deleted at some point.

I mean, if somebody logged in, they're not meant for like security auditing purposes, like they're meant for like just users gathering information.

Or at least relative auditing, right? They're not meant to be stored for years.

@1:29:05 - Scott Wolpow

Right.

@1:29:06 - steven.ayers

So they are configured to get deleted at some point automatically after either there's so many of them or after a particular timeframe, right?

Like from a database backup perspective, right? We don't always back up the DB log just because it's a lot of data.

And by the time you do the restore, none of that information is useful. So I think that might be the correct route to go.

I'm already a maintainer on that project too. So maybe I have some bias that way.

@1:29:41 - JD Leonard

I mean, it's a solid, you know, solution, or at least it was.

@1:29:48 - Scott Wolpow

I'm trying to think of extremes because, you know, we want to build for what we haven't thought of. And that's what we really need to do.

Can't give them the MVP. Okay, I know that because MVP will never be done. But how do we build a system that allows to do it?

Now, one thing I was thinking, one thing I do like about CiviCRM is when you load it, it comes with a bunch of what they call extensions.

And you can install extensions, and that just copies it from the default files, CiviCRM extension directory, into the Drupal modules directory.

So it packs a lot of extra stuff, but you don't have to go down and download it and reinstall it.

Now, there are Drupal modules that Drupal makes that you've installed by Composer. But perhaps our add-ons can be done by that way also, is you go into CiviCRM config, oh, I need these functions, and boom, either copies from one file to the other directory, or it pulls it down by Composer.

Just a thought. Try and make it easier for the mundanes, for the everyday people who don't know much. They also cause the most damage, but, you know.

@1:31:13 - steven.ayers

So maybe supporting Ludwig, if necessary?

@1:31:19 - Scott Wolpow

Say that again?

@1:31:21 - steven.ayers

Right. Composer, but there's also Ludwig.

@1:31:25 - Scott Wolpow

Ludwig.

@1:31:27 - steven.ayers

It's a way of downloading dependencies, not unlike Composer, but it's a way of doing it without needing Composer. I'm not terribly familiar with it, but I did include a Ludwig.json file in one of my projects, or more accurately, I accepted a merge request that included one.

So, you were talking about just downloading, being able to just download, like, the extension, so.

@1:31:55 - Scott Wolpow

Right.

@1:31:56 - JD Leonard

I mean, I think it's, frankly. Like, a bit of a lost cause at this point in the Drupal ecosystem to try to not use Composer.

Right? Like, good luck. You're going to run into all sorts of compatibility issues with dependencies not being pulled in properly, right?

You're not going to convince all these contra projects to include whatever Ludwig config is necessary for it to know what's going on.

@1:32:23 - steven.ayers

Yeah, fair enough. Were you here for when Norah was showing the emailing? I saw and heard some. I mean, that's what I imagine the CRM mailer email.

I don't know what the namespace is going to be.

@1:32:47 - JD Leonard

CRM Compose or something?

@1:32:49 - steven.ayers

No, it's probably just going to be CRM email because...

@1:32:55 - Scott Wolpow

Or CRM bulk email?

@1:32:57 - steven.ayers

Like, I'm very literal. other side Där harvest! he weeks Thank you.

@1:33:04 - JD Leonard

Yeah, it's, I mean, if you want to be really literal, right, like it's really about, well, yeah, I guess bulk email.

Bulk email, I think, is better than email because email could be all sorts of different things.

@1:33:20 - steven.ayers

Yeah. Being very literal, but also very ambiguous is, I think.

@1:33:33 - JD Leonard

Do we want to try brainstorming some requirements for that? Like try to move that in a direction of something?

@1:33:50 - steven.ayers

So would we have, we would have email templates. Those things exist, I assume, or maybe they don't.

@1:34:00 - JD Leonard

When you say they exist, what do you mean?

@1:34:03 - steven.ayers

Like, I know Easy Email is a project that exists. I don't recall if it has templates or not, but like, something probably already has templates that uses tokens.

Then again, how complicated are we really talking about? Is it really just a text field that supports tokens? Yes, Steve, it's a text area that supports tokens.

@1:34:25 - JD Leonard

Easy Email does support templates. I don't know much more than that. Like, I installed it once.

@1:34:34 - steven.ayers

When we send these, one of the things that, I believe MailChimp, since it offers an API, it's not like a protocol in the same sense of like SMTP.

We can give them the data and they'll give us like a 201 response saying they created some job to do the thing and to like, here's some token, ask us what the status is kind of stuff.

And it executes.

@1:35:00 - JD Leonard

Are you, well, so they're, MailChimp, MailChimp has two different services. There's the like canonical MailChimp service, which is marketing email tooling.

And then there's a transactional email service formerly known as Mandrill.

@1:35:24 - steven.ayers

I guess I was thinking the marketing one. Yeah.

@1:35:27 - JD Leonard

So just sticking to the marketing one, right? MailChimp basically mostly expects that you are composing and sending emails from their UI.

You, you can, you, they do have an API. You can send an email campaign and pass the content in.

However, the, The, And a benefit of that is, like, the email template itself, like the outside of the content part, right, like the styling and all that, right, lives in MailChimp and can be configured in MailChimp.

And the drawback is you're limited as far as, like, you've just, you've, you don't have full control from the API about, like, what that looks like.

Yeah. Although the API does support, I think, creating those, you know, styles and things like that, but I don't think we want to get into managing that through the API.

@1:36:42 - steven.ayers

I imagine it also supports their own tokens, not our tokens.

@1:36:48 - JD Leonard

Correct. If any tokens. It does support their tokens. They call them merge fields. Those have to be configured. They appeared in, well, in the MailChimp UI, although I suppose their API probably supports it as well.

They are pretty limited as far as their, let's say, data type support. And I think also there's a fairly strict limit on how many you can have.

@1:37:19 - steven.ayers

It sounds like that won't be an option for us then, if we're trying to construct like a framework that uses Drupal tokens.

@1:37:28 - JD Leonard

Well, so here's the thing. You don't have to use those tokens. You don't have to use the MailChimp tokens, right?

So there's nothing stopping us from using Drupal tokens, and then by the time the email gets to the MailChimp API, the tokens have been resolved already by Drupal.

@1:37:45 - steven.ayers

Well, would that still be a marketing email in the MailChimp sense, or would it in the MailChimp sense be just sort of like a one-off transactional email?

Oh, I see what you're saying.

@1:37:54 - JD Leonard

I see what you're saying. Since they're going to be unique emails to the... You're totally right. I don't know for certain, but I would guess that it's not truly a MailChimp campaign at that point.

@1:38:14 - steven.ayers

Yeah.

@1:38:15 - JD Leonard

Probably what you would need to do is use the MailChimp merge fields, which is doable, but it requires just straight up syncing contacts to MailChimp contacts.

I think the key is for CRM bulk email to not rely on a marketing email provider, but to rely on a email API.

An email service provider with an API that can provide bounce information and deliverability information in general.

@1:39:10 - steven.ayers

I was thinking that we'd want to build it around the existing Drupal mail system. It's got plugins for different things.

We're not going to be able to take advantage of third-party campaigns unless it's literally the same email, which isn't really the use case I would be expecting.

@1:39:34 - JD Leonard

Right, right. And I think the bounce component can be built globally for Drupal.

@1:39:39 - steven.ayers

It doesn't need to be CRM-related.

@1:39:41 - JD Leonard

Say that one more time. I think the bounce features, bounce detection, is just global to Drupal.

@1:39:48 - steven.ayers

It's not CRM-related.

@1:39:49 - JD Leonard

I agree.

@1:39:52 - Scott Wolpow

I think now, Chimp and the other providers use their own method for bouncing. We'd have to have...

@1:40:00 - steven.ayers

An email service provider with an API that can provide bounce information and deliverability information in general. I was thinking that we'd want to build it around the existing Drupal mail system.

It's got plugins for different things. We're not going to be able to take advantage of third-party campaigns unless it's literally the same email, which isn't really the use case I would be expecting.

@1:40:34 - JD Leonard

Right, right. And I think the bounce component can be built globally for Drupal. It doesn't need to be CRM-related.

Say that one more time.

@1:40:43 - steven.ayers

I think the bounce features, bounce detection, is just global to Drupal. It's not CRM-related. I agree. I think now, Chimp and the other providers use their own method for bouncing.

We'd have to have... Plugins to integrate with those, but it still would then be stored in the same database, and regardless of what plugin, the, I guess, do not send to bounced email feature, you know, should work regardless of where the data.

@1:41:22 - JD Leonard

Do we want to call this actually CRM campaign or CRM bulk email?

@1:41:30 - Scott Wolpow

That's a good point.

@1:41:32 - JD Leonard

I would call it email campaign, not campaign, because there are other kinds of campaigns, like a donation or a fundraising campaign.

Well, yeah, but like bulk email campaign. Yeah.

@1:41:54 - Scott Wolpow

No, I think maybe bulk email.

@1:41:57 - JD Leonard

I don't know. Ultimately, I think, well, I don't know, bulk email, right? If we want to have a drop down or some button on the contact page to send them an email through the system, that would probably still use the name of this project that's yet to be determined.

Right. Conceptually, yeah, yeah. Yeah, you're right. I think bulk email is more understandable to a layperson as well. Email campaign doesn't mean things to some people.

Right. Everyone refers to it as a blast. Not even bulk email. So... When you send a bulk email, though, right?

Like when you're sending out this email, it might be a marketing email or it might be a transactional email from like a compliance perspective, let's call it.

There is. It's about compliance and their legal standards related to them. So transactional email, you don't need an unsubscribe link, right?

A marketing email, you do. Who determines whether a given email is a marketing email or a transaction email? Well, if you're sending it to more than one person, right?

It's not about whether it gets sent to more than one person. If you have 10 people RSVP for an event and you send an email to the people who RSVP for that event telling them about information they need to know about the event, that's transactional.

people, even though it's it's going

@1:44:03 - steven.ayers

If you send an email to a bunch of people who RICP'd for an event about other events they might be interested in, right, that's marketing.

@1:44:15 - JD Leonard

And what MailChimp and a lot of these services try to do is help people with the compliance around that, mostly by just assuming that everything is a marketing email.

Right. But it is, I think there are plenty of use cases, right, where it's important to let the sender choose.

Right. What is this? Because, for example, I'm sending, you know, information about an upcoming event to people who are SVP'd.

@1:44:54 - steven.ayers

Like they, they shouldn't be able to unsubscribe from that.

@1:45:00 - JD Leonard

You know what I mean?

@1:45:06 - Scott Wolpow

There should be a, like, do not contact option, though, or do not send email option. There could very well be that, but that is typically not something that you expose, I think, to the recipient of the email.

@1:45:27 - JD Leonard

You would expose unsubscribing from marketing emails or selecting your preferences for what types of emails you want to get, but there's some emails that you're always going to get unless you effectively go to the lengths of saying, hey, like, remove me from your database, right?

@1:45:50 - Scott Wolpow

So we have to tell people about changes to your system that you legally have to send out, like, use to your EULA?

Right. So I did a quick research.

@1:46:04 - JD Leonard

There's the Simply Mail Queue, and the Mail Queue is what you would do if you send me out a bulk transactional email.

@1:46:12 - Scott Wolpow

So 1,000 people go into your event. You want to notify them.

@1:46:16 - JD Leonard

You can say, all right, send out, you know, 10 every 5 seconds or 100 of every second. But, Scott, that is if you're not using an email service provider.

Right. Correct. But I think what we're talking about is, like, we should leverage the email service providers out there so that we don't have to do that and bounce process, like, all the bounce processing.

Right. There's a lot to figure there.

@1:46:47 - Scott Wolpow

100% I agree with you. The problem becomes, though, that will people, the casual user, understand all that. I understand when to use one or not the other.

A casual user is not installing Drupal CRM.

@1:47:13 - JD Leonard

All right. Now, there could be a SaaS, you know, solution in the future that is based upon Drupal CRM, right?

But then it's that services problem to handle that kind of thing. So I think we can assume a certain level of technical proficiency with somebody who is setting up, you know, installing Drupal and CRM, and we have to.

What we can put notice to explain people that, you know, CRM uses except for anything CRM that's in any email that gets sent from CRM should go.

They're a third-party provider. Agreed. Agreed. We should document that. But Drupal itself can use whatever you want to use.

can use your local SMTP server.

@1:48:13 - steven.ayers

And so whatever mailer people are using, right, for the Drupal emails by default, great, right? And that can continue.

And CRM bulk email will use its own. Like, we'll use a different mail-in, presumably, right? I think we should use the same plug-in system.

What I'm – sorry, let me rephrase that. What I mean is there is a high probability, right, that an email that's being sent out from CRM bulk email is marketing in nature and has additional requirements beyond the transactional emails.

@1:48:58 - Scott Wolpow

That need to be accounted accounted for.

@1:49:02 - steven.ayers

Right. So while the transact, well, I don't know, it's tricky. Like I'm thinking, cause like there's a value for the transaction in most in having the bounce processing in place.

@1:49:13 - JD Leonard

Right. Well, bounce processing is still global. It doesn't matter what you do. Oh, I see what saying. Right. Like if we use the same plugins, it's a week.

So the mail handlers, right. There's a default mail handler you can configure, but like, just as an example, Drupal web form has a different mail handler.

So we could send email differently than the default system. Yeah. But like, there's a plugin with configurations that handle how all that's done.

So like, maybe we do something like that, where if you need to have a different mail handler for stuff you're sending out, you can do that.

But it's still going to go through the same Drupal core system.

@1:49:59 - steven.ayers

Yeah. We'll still be exposed to that cook mail alter function. And so, right, if the recipient is in our bounce list, we can still not send it.

@1:50:15 - JD Leonard

Okay. Yeah, I got a little twisted around. So what Scott was saying earlier about, okay, yeah, we got to have a, right, there would be a queue, right, where these emails are being processed.

Um, and then they get individually sent out, right, via whatever the Drupal mail handler is.

@1:50:41 - steven.ayers

The bounces are happening asynchronously.

@1:50:46 - JD Leonard

Yep.

@1:50:51 - steven.ayers

And presumably there's something in the email header or some way that we can tie it back to the email we sent.

There is a header, I don't recall, I looked at it recently, there's a header to tell it where to report bounces to, so it doesn't have to be the same email address that sent it, but if not present, that is the email address.

Sorry, what I meant was not the bounce recipient or whatever, right, but the email that we send out, right, when we receive that bounce back, we need some way of linking that bounce to the email, a record of the email that we sent, right?

That would be nice, but we'll have the email address. Oh, I see, I guess we don't, well, yeah, it would be really nice, though, to understand that a given email was not delivered, right?

It would, but, so, you're going to get more into the weeds here. And you're going to be requesting demanding features that not all the mail plug-in support.

@1:52:10 - JD Leonard

I think it could be embedded in the Bounce email recipient probably, right? At a plus and then an ID or something.

I've had to do a project back when I worked at Big Company where we were sending emails to our customers involving support cases.

Hey, we think we fixed this for you, but you didn't say it was fixed, so we can't close it unless you tell us that.

@1:52:39 - Scott Wolpow

Or unless we send you three of these emails. And so I had to track whether it got sent, bounced, maybe open.

There's like other statuses there too.

@1:52:53 - steven.ayers

So they are available through something. I had an API. I though, now that I think about it, so that was Outlook web, something or other.

Yeah.

@1:53:08 - Scott Wolpow

I mean, I've used, I've used SendGrid and I'm a little too familiar with their API.

@1:53:14 - JD Leonard

Are we going to then have a content entity then for each email it's sent? Well, yeah, maybe.

@1:53:22 - Scott Wolpow

And then would we have a workflow on that?

@1:53:26 - JD Leonard

So like the first workflow. Because it goes from draft to actually being sent to possibly we have information about whether it was delivered or whether it was open.

A good percentage of balances for people who have email boxes that are filled up. Now, either they abandon the box or they just don't delete any emails.

There could be something that exists for tracking the status of the emails being sent that we might want to look into before trying to build our own.

But I feel pretty confident that the bouncing can be done regardless of who the sender is.

@1:54:10 - Scott Wolpow

I agree.

@1:54:17 - JD Leonard

And there's – so there would be different plug-ins for checking the bounces, right? Yeah, so it's going to be the bounce project, I guess.

Yeah, probably. So if I use SendGrid, right, to send this stuff out, right, I can – I can include in the header or in the API request, you know, if I'm using the, like, SendGrid module to send via the SendGrid API.

I can include metadata. I of various sorts, including, for example, yeah, the ID of the email content entity, then I would need a SendGrid bounce plugin, right, that would, in the case of SendGrid, receive notification of the bounces via webhook and process them that way, right?

And it would have, because it's the SendGrid, you know, whatever, and it knows that the content, like there's a header, or there's some metadata, right, that allows me to link this to an email, right?

@1:55:44 - steven.ayers

There could be, what, a CRM bulk email SendGrid module that facilitates processing the metadata. That comes in on the bounce and associating it with the CRM bulk email content.

See what I'm saying?

@1:56:10 - Scott Wolpow

Yeah. We would get a message ID. So each email has a message ID. But that message ID is not something that we would have in Drupal before we get the bounce.

Possibly. depends on what plug-in system is being used. I'd have to look into it to know more. So you're right.

It's possible Drupal might receive that back when it – well, it would be like an async thing probably as well because emails typically are not sent immediately when you use an email service provider.

@1:56:47 - JD Leonard

The message ID gets created at some point. I think you can also include one if you want, but maybe that's not best practice.

It's supposed to be generated based off of certain things on the first mail server that gets it. Like, it's time zone, like the time stamp, some other nonsense.

So, Merrill Champ seems to have a message, a list ID, so when it was sent, so when it comes back in the bounds, it knows internally what that does, as opposed to a separate email address.

I suppose it's probably in the header, so if we have, as Steve said earlier, if we access wherever the email business we're balancing to, we can read that.

@1:57:36 - Scott Wolpow

The question is, can we get from the providers the list IDs so we can match them?

@1:57:43 - JD Leonard

The list ID, we would be responsible for setting in this scenario, because we wouldn't be using MailChimp. We would be using an email API where presumably it does not set a list ID because it doesn't know what emails it's sending.

It doesn't know anything about them.

@1:58:14 - Scott Wolpow

But I think the list ID, and I don't know a lot about it, but I think it's used to facilitate automatic unsubscribe links in supported email clients as opposed to being used for bounce processing.

If had subscribed links, you're going to be different. Yeah.

@1:58:37 - steven.ayers

Unsubscribe are universal on your platform.

@1:58:41 - JD Leonard

Not always. What I mean is if I receive an email in Gmail from a MailChimp campaign that gets sent out, ignoring all of the content of the email, Gmail.

Gmail. It will surface an unsubscribe link at the top that I believe is based on the list ID header and sends, I don't know, an API request or something, right?

Being like unsubscribing, or maybe it causes Gmail to send an email back specific place. don't know, but we've gone down into the weeds here.

All right, I'll post back to the call for email you asked me to do earlier on.

@1:59:31 - Scott Wolpow

Mm-hmm.

@1:59:33 - JD Leonard

I have another call in another five minutes. I have another minute or I got a drop.

@1:59:38 - Scott Wolpow

I've got a meeting in five minutes. Very good. The other thing is how to integrate banners and ad networks.

That's a whole different stance. Information down the line. Interesting. I also think it'll be interesting, it would be interesting to, to provide a.

A way to compose emails using Drupal Canvas. That would be interesting. Right, which very much would compete with MailChimp's, you know, campaign editor.

Yes. And I think it would be incredibly powerful. My problem is I don't mind building these and contributing them.

I don't know if I have the time to maintain them. Well, first step is to get them built, so.

Yeah. All this stuff is on my to-do list, and it needs to be done, like, yesterday. Mm-hmm. But, you know, when I spend half the day trying to install Civi CRM and screaming at the computer, calling it all names, and cursing out the AI, I lose half a day.

Then I run out of energy because I'm, like, so frustrated. So it goes. All right, I will bid you farewell, Scott.

Good to see you. Have a good day. Take care. Bye-bye.-bye.

Comments

jdleonard created an issue. See original summary.

jdleonard’s picture

Issue summary: View changes
Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

jdleonard’s picture

Issue summary: View changes

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.