Discourse + Meetup integration


(Joel Natividad) #1

We’re trying to use Meetup and Discourse together. Meetup, for the event management stuff, and Discourse for the discussions.

However, the transition hasn’t been as smooth as we hoped. I think there needs to be a smoother way to migrate meetup members. Of course, meetup doesn’t make it easy as their API doesn’t allow you to get member emails.

Are there any suggestions on how to do this? Perhaps, by creating a sync bot? A lot of the existing meetup members are still subscribing to the meetup mailing list and I want them to see whenever there is a new topic.


(Dan Mills) #2

I’ve been thinking about how to integrate Discourse and Meetup as well. Has anyone used Meetup’s OAuth endpoint for SSO?

http://www.meetup.com/meetup_api/auth/


(Dan Mills) #3

Ok, after banging my head against the Discourse Plugin API, I’ve made something that sort of works. I’d love some help getting it to work smoothly…

The first-time login flow isn’t so great - users still have to type in email, username, name, and check email to click a link. And after clicking that link, they get an error (!). I’m not sure what I’ve implemented wrong, my ruby/discourse-fu is exceedingly low. Subsequent logins do work properly though, so it’s not all bad.

Oh - and the Meetup OAuth2 tokens are apparently only valid for an hour. They can be refreshed, but I’m not entirely sure how to do that.


(Joel Natividad) #4

This is a great start! Doing meetup SSO should help with migration.

But what about getting existing users to organically do discussions on discourse instead of meetup?


(Dan Mills) #5

Hey Joel,

Not sure I get what you mean. This plugin will allow your existing Meetup users to login to your Discourse instance and join in discussions. They’ll need to provide email, username, and name on first login (but not a password).

It will not migrate your existing Meetup forum if you have that enabled, of course. You’ll want to close that off and tell your Meetup users to use your Discourse instance instead.


(Dan Mills) #6

If anyone knows how to do any of these, I’d appreciate the help to make the first-login experience better:

  1. Don’t ask for name. Meetup provides name, no need to ask the user.

  2. Don’t ask for username. Auto-generate something based on name; users can change it later if they want to.

  3. Don’t ask for email. I trust meetup.com to be a reasonably good IdP, and we can ask the user for an email later at a more reasonable time (e.g. when watching a topic, ask if they want to be notified via email).

    If it’s too much work to refactor because all the guts depend on email being there… then can we at least make it so they can start using the site immediately after providing the email, without needing to click the verification link in their email? If they haven’t verified after e.g. 1 month, we can prompt them to re-send.

Basically, although I am sold on Discourse, my users are likely to be slightly hostile to the idea of leaving meetup.com. Every single extra task, click, question, or confusing point in the first-time flow will vastly reduce my chances of moving discussions over to Discourse.


(Kane York) #7

Meetup providing the email is actually a requirement for login to work smoothly. The alternative is to treat it like Twitter signup, but that’s pretty ugly and could be changed. If Meetup can distinguish between verified and non-verified emails, then all the better - they’ll get either an email validation from Meetup or Discourse, depending on which they do first.


(Kane York) #8

As stated in the community building guide, if you show up every day, the software is secondary… Which is why what we’re doing at Discourse is so important :wink:


(Dan Mills) #9

Meetup does not provide an email. Nothing I can do about that – their API just doesn’t provide it. I get a stable ID, and other metadata like a (non-unique) name.

Even if it’s required, though, I want my Meetup users to be able to use Discourse before verifying the email. The stable ID from Meetup is sufficient assurance for my use-case.

Is that possible? How about the other tweaks I want to make?


(Noneck) #10

@jqnatividad anything to get us away from meetup comments would be GREAT!!!

n


(Joel Natividad) #11

What about creating a bot-type user in Meetup, and whenever somebody uses the meetup mailing list, the bot automatically reposts in Discourse?

This is somewhat akin to how Discourse enabled embedding with embed_by_username.

Maybe, we can even put in some logic to have an intelligent auto-response to the meetup mailing list, perhaps, leveraging Discourse’s invite feature, inviting the person to the reposted topic in Discourse?


(Clay Heaton) #12

Meetup’s comments and discussion features really are awful. I’m also sick of the dozens of people joining the group who apparently have zero interest and are highly unlikely ever to attend a meeting. I was wondering today if Meetup plants fake users in groups to push people over the limit to the more expensive usage tier. :wink:


(Dan Mills) #13

Syncing conversations like that is a really hard problem, and likely to result in a not-so-good experience for your users. There are many gotchas to that kind of approach.

I think our best bet is to have users move over to Discourse, but to make the experience as smooth as possible. That’s why I want help to make the first-time sign-in less confusing / easier.

I can’t reproduce the first-time login error message I got at first, but I’m still eager to get some help with the items I listed above… It’d be great to make Meetup->Discourse be two clicks.

Here’s the guide I’m putting together for my Meetup users:

https://community.tinkerkitchen.org/t/how-to-sign-in-via-meetup-com/35


(Dan Mills) #14

Ah, I should note that I’m not trying to migrate the discussion threads attached to each meetup event - only the standalone discussion forum you can enable in Meetup.

I don’t think there’s any good way to move the per-event comment threads over to Discourse, unfortunately. They’re too tightly integrated into the Meetup experience IMO.