Setono / SyliusMailchimpPlugin

Mailchimp integration plugin for Sylius
MIT License
11 stars 14 forks source link

Using value of code field as product id in Mailchimp may create conflicts on Mailchimp side #50

Open broiniac opened 4 years ago

broiniac commented 4 years ago

When pushing Products to Mailchimp code field from Sylius is used as id in Mailchimp. Mailchimp id field has (probably) undocumented requirement - it can't be longer then 50 chars. The problem is that Mailchimp is not throwing any error - instead it trims given value to 50 chars. So when code field is long enought it may generate quirks and errors while pushing products to Mailchimp.

For example:

Sylius Product: code: zestaw_dos_argentinos_playadito_amanda_despalada_2kg Mailchimp: id: zestaw_dos_argentinos_playadito_amanda_despalada_2

So if there will be product in sylius with code like: code: zestaw_dos_argentinos_playadito_amanda_despalada_200g then Mailchimp will trim it to the exact same id creating conflict.

If Sylius id field is better choice, please remember, that Mailchimp id field has to be string.

I didn't check if other Mailchimp e-commerce models has same behavior (orders/customers/carts/etc). Cart is not integrated for now. Order is using number field as Mailchimp Id, Customer is using id field, so we are good there.

loevgaard commented 4 years ago

Hi @broiniac

Thanks for this issue. I used the code because most of the time the code is more useful for users than the id, but what you are presenting is a real problem.

I have an idea for a solution: We could pre- or append the Sylius id to the code and use this as the id in Mailchimp. Should probably be prepended if Mailchimp truncates the id. Then we would have something like this:

Id Code Id in Mailchimp
1 T_SHIRT 1-T_SHIRT
2 JEANS 2-JEANS

What do you think about that?

loevgaard commented 3 years ago

Any news here, @broiniac? :)

broiniac commented 3 years ago

That approach should be pretty easy to implement. It is important to remember, that id in Mailchimp still can be limited to 50 chars, so it should be truncated accordingly. Sadly, product owner decided to move towards GetResponse. Since my workload is high, I can't take care of this one by myself in any near future.