Skip to content

Commit bba376d

Browse files
renzonrenzon
authored andcommitted
Included utm_source on Active Campaign
close #3897
1 parent 7867fcd commit bba376d

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

pythonpro/core/tests/test_lead_landing_page.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ def test_user_has_role(resp_lead_creation, django_user_model):
189189
def test_user_created_as_lead_on_email_marketing(resp_lead_creation, django_user_model, create_lead_mock: Mock):
190190
user = django_user_model.objects.first()
191191
create_lead_mock.assert_called_once_with(user.first_name, user.email, 'offer-funnel-0', 'utm_source=facebook',
192-
id=user.id)
192+
id=user.id, utm_source='facebook')
193193

194194

195195
def test_user_source_was_saved_from_url(resp_lead_creation, django_user_model, create_lead_mock: Mock):
@@ -292,7 +292,8 @@ def test_should_send_utms_to_email_marketing_as_tags(create_lead_mock, resp_lead
292292
"utm_campaign=a00f00",
293293
"utm_content=content",
294294
"utm_term=term",
295-
id=ANY
295+
id=ANY,
296+
utm_source='facebook-ads'
296297
)
297298
]
298299
create_lead_mock.assert_has_calls(calls)

pythonpro/domain/tests/test_lead.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def sync_user_delay(mocker):
1515

1616
def test_creation(db, django_user_model, create_or_update_lead_mock, sync_user_delay):
1717
user = user_domain.register_lead('Renzo Nuccitelli', 'renzo@python.pro.br', 'google_ads')
18-
create_or_update_lead_mock.assert_called_once_with(user.first_name, user.email, id=user.id)
18+
create_or_update_lead_mock.assert_called_once_with(user.first_name, user.email, id=user.id, utm_source='google_ads')
1919
assert not sync_user_delay.called
2020
assert django_user_model.objects.all().get() == user
2121

@@ -25,6 +25,8 @@ def test_should_create_lead_with_extra_tags(
2525
user = user_domain.register_lead(
2626
'Renzo Nuccitelli', 'renzo@python.pro.br', 'google_ads', tags=['tag-1', 'tag-2']
2727
)
28-
create_or_update_lead_mock.assert_called_once_with(user.first_name, user.email, 'tag-1', 'tag-2', id=user.id)
28+
create_or_update_lead_mock.assert_called_once_with(
29+
user.first_name, user.email, 'tag-1', 'tag-2', id=user.id, utm_source='google_ads'
30+
)
2931
assert not sync_user_delay.called
3032
assert django_user_model.objects.all().get() == user

pythonpro/domain/user_domain.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from pythonpro.core import facade as _core_facade
1313
from pythonpro.core.models import User as _User
1414
from pythonpro.discourse.facade import MissingDiscourseAPICredentials, generate_sso_payload_and_signature
15-
from pythonpro.email_marketing import facade as _email_marketing_facade
1615
from pythonpro.domain.subscription_domain import subscribe_with_no_role
16+
from pythonpro.email_marketing import facade as _email_marketing_facade
1717

1818
_logger = Logger(__file__)
1919

@@ -43,7 +43,7 @@ def register_lead(first_name: str, email: str, source: str = 'unknown', tags: li
4343
source = 'unknown'
4444
_core_facade.validate_user(first_name, email, source)
4545
lead = _core_facade.register_lead(first_name, email, source)
46-
_email_marketing_facade.create_or_update_lead.delay(first_name, email, *tags, id=lead.id)
46+
_email_marketing_facade.create_or_update_lead.delay(first_name, email, *tags, id=lead.id, utm_source=source)
4747

4848
return lead
4949

pythonpro/email_marketing/facade.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626

2727

2828
@run_until_available
29-
def create_or_update_with_no_role(name: str, email: str, *tags, id='0', phone=None):
30-
return create_or_update_user(name, email, '', *tags, id=id, phone=phone)
29+
def create_or_update_with_no_role(name: str, email: str, *tags, id='0', phone=None, utm_source=None):
30+
return create_or_update_user(name, email, '', *tags, id=id, phone=phone, utm_source=utm_source)
3131

3232

3333
@run_until_available
@@ -79,7 +79,7 @@ def _normalise_id(id):
7979

8080

8181
@run_until_available
82-
def create_or_update_user(name: str, email: str, role: str, *tags, id='0', phone=None):
82+
def create_or_update_user(name: str, email: str, role: str, *tags, id='0', phone=None, utm_source=None):
8383
if settings.ACTIVE_CAMPAIGN_TURNED_ON is False:
8484
return
8585
prospect_list_id = _get_lists()['Prospects']
@@ -95,6 +95,8 @@ def create_or_update_user(name: str, email: str, role: str, *tags, id='0', phone
9595
}
9696
if phone is not None:
9797
data['phone'] = phone
98+
if utm_source is not None:
99+
data['field[%utm_source%]'] = utm_source
98100
if id == _normalise_id('0'):
99101
contact = _client.contacts.create_contact(data)
100102
else:

0 commit comments

Comments
 (0)