Custom Macros for Unica Campaign

Custom Macros for Unica Campaign

Written by James Aziz
What are Custom Macros?

Custom macros are user-defined queries that integrate into the flowchart workflow, allowing the implementation of more complex logic than natively afforded by IBM Campaign’s point-and-click interface and scripting language.

Why are Custom Macros Important for IBM Campaign?
Leveraging custom macros provides an abundance of benefits. Once defined, custom macros can be reused throughout a flowchart to improve modularity and consistency. They can be integrated as part of the template library and are quickly consumed by users who can’t develop custom macros, but know how to use them. These custom macros centralize flowchart logic and processes, improving flexibility and reducing the risk of user error. Allowing such complex transformations and logic to be contained entirely within Campaign is another benefit of custom macros. Alternatively, users can resort to a myriad of tools (for example, Base SAS or a scripting language such as Python) to process data, and the accompanying mess of integrations to facilitate data transfer out and then back into Campaign. However, these methods introduce a lot of complexity and make campaign implementation brittle and easily subject to breakage, which presents risk and may result in quality issues. Lastly, the user guide also outlines this benefit of using raw SQL custom macros:

 

Support for raw SQL improves performance, allowing complex transactions to be carried out in the database rather than having the raw data filtered and manipulated in the application server.
Overview of Custom Macros

IBM Campaign supports three principle types of custom macros:

  • IBM Macro Expression – the default language for building queries and derived fields in Campaign
  • Raw SQL selecting ID list – used to return a list of IDs according to a specified SELECT clause
  • Raw SQL selecting ID + value – returns a list of IDs and associated values, as specified in the attribute list of the SELECT clause

Moreover, custom macros offer the use of an unlimited number of variables, which are supplied to the expression as parameters passed in a macro invocation.

Now that the benefits of custom macros have been outlined, the rest of the guide delves into the specifics of their use and back-end implementation. Note that the following examples all use a sample dataset, running on a v10.5 DB2 database.

1.0 Custom Macros Interface

While in editing mode within a flowchart, the custom macros dialog can be found by navigating to Options → Custom Macros. This interface presents all the defined custom macros and their properties and allows the creation of folders for organizing macros.

1.1 Folder creation

To create a folder:

  1. Click New folder…
  2. Specify a name for the folder.
  3. Provide a description of the contents or intended contents of the folder.
  4. Specify under which existing folder to create this new folder. Choosing None will leave it in the “root” directory.
  5. Select the applicable security policy.
1.2 Macro creation

To create a custom macro:

  1. Click New item…
  2. Specify a name for the macro.
  3. Select a security policy, if applicable.
  4. Provide a note describing the functionality of the macro – this is critical, as it is presented to end users in the Formula helper.
  5. Select one of the three expression types.
    • For either SQL option, additionally, choose a database.
    • For the Raw SQL selecting ID + value option, select a value type.
      • If text, supply the width of the string in bytes (max 256).
      • If numeric, note that the number of decimal places is specified using the DefaultScale parameter found at Settings → Configuration → Campaign → partitions → partition[n] → dataSources → dataSourcename
  6. Enter the desired expression.
1.3 Move/edit macros

To move or edit a custom macro:

  1. Click Edit/Move…
  2. Change the Save under location to move the macro to another directory.
  3. Make any additional changes as desired, using the same process as macro creation. Note that the security policy cannot be changed at this point.
1.4 Remove macros/folders

To remove a custom macro:

  1. Select the folder/macro in the Items list. Folders can be expanded to see the macros within.
  2. Click Remove. Note that removing a folder eliminates the folder and anything inside.
2.0 IBM Macro Expression

The same IBM expression language found throughout Campaign can be used to define custom logic in a custom macro. This helps code consistency, reusability and modularity, making complex logic simpler to use in the flowchart workflow.

2.1 Demonstration A: Selection
Data

This example uses:

  • B_ACCT_INDIV, mapped in at the Individual ID audience level.
  • This mapped table is backed by database table DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account.
Description

Create a custom macro for selecting individuals that have an account of type ‘C’ or account status of type ’1’.

Implementation

The macro definition (name) is acct_c_or_op_amt(OPERATOR, AMOUNT). The complete configuration is:

Note that this custom macro references the mapped table B_ACCT_INDIV (backed by database table DBO.ACCT). Additionally, the expression uses the built-in OR macro, which is accessible from the Formula helper in the expression definition window (this pops up after clicking on the Expression entry box).

Utilization

An IBM Expression custom macro can be used wherever the IBM Expression language can be used in the tool, such as in Select expressions, Segment queries, and derived fields. The macro can be found under Custom macros in the Formula helper (if Formula helper is grayed out, click Text Builder):

In this example, a Select process box is configured to execute the macro as it’s expression, and the parameters OPERATOR and AMOUNT are passed in at macro invocation:

Note that the macro is subject to the same restrictions as any IBM language expression – any table referenced within the macro must be mapped in and available in the context where it is used. Given custom macros can be used across flowcharts, mistakenly using one in the incorrect context will result in an error. As such, it is critical to organize custom macros in folders, and supply notes describing their operation.

The above configuration produces the following query, run on the back-end and visible in the log:

  1. SELECT DISTINCT INDIV_ID FROM DBO.ACCT WHERE ((DBO.ACCT.ACCT_TYPE_CODE = ‘C’) OR (DBO.ACCT.ACCT_BALANCE > 5000)) ORDER BY INDIV_ID
2.2 Demonstration B: Derived Fields
Data

This example uses:

  • B_ACCT_INDIV, mapped in at the Individual ID audience level.
  • This mapped table is backed by database table DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account.
Description

Create a custom macro that takes two numbers as parameters and produces their arithmetic mean.

Implementation

The macro definition is average(NUM1, NUM2). NUM1 and NUM2 are now parameters that can be used in the expression by enclosing them in a set of <> brackets, e.g., . The expression is therefore ( + ) / 2. The complete configuration is:

Utilization

This custom macro can be used to create a derived field that averages two other table fields:

2.3 Tips
  • Built-in macros can be used when creating IBM Expression custom macros.
  • Just as with any IBM Expression language query, mapped tables can be referenced and used in IBM Expression custom macros.
3.0 Raw SQL Selecting ID List

This type of custom macro can be used to leverage the extensive capabilities of raw SQL selection and package that logic in a way that is readily accessible to a non-technical user.

3.1 Demonstration A - Selection
Data

This example uses:

  • DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account.
Description

Create a custom macro to select all individuals from a table having average account balances greater than some amount for each account type, where the table and amount are supplied as parameters.

Implementation

The macro definition is sel_acct_gt_amt(TABLE, AMOUNT). Parameter names are enclosed within <> when used in the SQL query:

  1. select indiv_id
  2. from <TABLE>
  3. group by indiv_id, acct_type_code
  4. having avg(acct_balance) > <AMOUNT>;
The complete macro configuration:
Utilization

As with all custom macros, this type of macro can be found in the Formula helper wherever IBM Expressions are permitted. However, given this custom macro returns only a lit of IDs, it cannot be used in a derived field. In this example, a Select process box is configured to Select Individual IDs with, with the expression sel_acct_gt_amt(DBO.ACCT, 5000), where DBO.ACCT is the database table to be queried, and 5000 is the amount. Campaign translates this call into the following query, visible in the log:

  1. select INDIV_ID from DBO.ACCT group by INDIV_ID, ACCT_TYPE_CODE having avg(ACCT_BALANCE) > 5000;

The two variables and have been replaced in the query by the parameters passed in a macro invocation. Also note that the selection criteria will be applied to the input – specifically, only the subset of records in both the process box input and raw query result will be in the output cell. In other words, the result of this Select process box will be the intersection of the input set and the set returned by the macro query.

3.2 Demonstration B - TempTable
Data

This example uses:

  • DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account.
  • INDIV, which contains a collection of individual IDs and their associated details.
Description

Create a custom macro to select individuals that are in the Eastern time zone and include only those who have been passed in from a previous process box, if one exists.

Implementation

The macro name is sel_est_incl_prev, and the SQL expression is:

  1. select dbo.indiv.indiv_id 
  2. from dbo.indiv 
  3. {inner join <TEMPTABLE> on dbo.indiv.indiv_id = <TEMPTABLE>.indiv_id} 
  4. where dbo.indiv.time_zone = ‘EST’;

Note that line 3 will be executed only if an upstream &ltTEMPTABLE> exists because it is wrapped in braces.

Utilization

If this custom macro is invoked in the expression of a Select process box that is accepting an input cell from a preceding Select, the executed SQL appears in the log as:

  1. select DBO.INDIV.INDIV_ID from dbo.indiv inner join UAC_14270_l on DBO.INDIV.INDIV_ID = UAC_14270_l.indiv_id where DBO.INDIV.TIME_ZONE = ‘EST’;

…where UAC_14270_l is the TempTable, the cell passed in from the preceding Select. Alternately, if this custom macro is called from a Select configured with a mapped table as input, the log shows:

  1. select DBO.INDIV.INDIV_ID from dbo.indiv  where DBO.INDIV.TIME_ZONE = ‘EST’;
3.3 Tips
  • The records passed out of the Select are deduplicated, even if the raw SQL custom macro selects duplicate individuals.
  • This type of custom macro cannot be used in a derived field.
  • The IDs selected by the raw SQL custom macro must be of the same type (numeric/text) as the audience in the context where the macro is invoked:
    • For example, if a Select is configured to select individual IDs (numeric), the custom macro it calls in its expression must also return IDs of type numeric, e.g. it cannot return time zones;
    • Again, a set intersection is performed here – both sets must contain elements of the same type;
    • As long as the ID types match, Campaign will perform the intersection, regardless of whether it makes logical sense – this may lead to incorrect results.
4.0 Raw SQL Selecting ID + Value

This type of custom macro extends the capability of the Raw SQL Selecting ID macro to allow the selection of an additional column from the table. Once again, custom macros allow complex logic like this to be encapsulated in a way that is easily accessible to non-technical users.

4.1 Demonstration A - Selection
Data

This example uses:

  • DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account.
  • B_ACCT_INDIV, which is DBO.ACCT, mapped in at the Individual ID audience level.
Description

Create a custom macro that determines the difference between an individual’s total credit limit across all their accounts and the total balance across all their accounts. Select only individuals with a difference greater than 5000.

Implementation

This macro is defined as credit_minus_balance. A note helps explains the functionality of this macro to end users and is visible in the Formula helper. The full query is then:

  1. select indiv_id, sum(credit_limit) – sum(acct_balance) 
  2. from DBO.ACCT 
  3. group by indiv_id;
The value type to be returned must be Numeric here, corresponding to the second attribute (column) in the select clause. The complete macro configuration is:
Utilization

As with all custom macros, a raw SQL selecting ID + value type macro can be found in the Formula helper. As an example use case, a Select is configured to Select Individual IDs with and the expression defined as credit_minus_balance() > 5000:

The output of this Select will be the intersection of the input set (all individuals in the B_ACCT_INDIV table in this case) and the subset of the macro query result that have a (credit – balance) difference greater than 5000. The selection process is visible in the log, abridged here:

  1. select INDIV_ID, sum(CREDIT_LIMIT) – sum(ACCT_BALANCE) from DBO.ACCT group by INDIV_ID;
  2. Query completed; starting data retrieval.
  3. Data retrieval completed; 60725 records retrieved and returned to caller.
  4. Data retrieved to IBM Campaign server.  Processing query expression.
  5. Select: N_RECORDS = 56509

Initially, the custom macro SQL query runs and returns 60725 records. Then the query expression in the Select is processed against the input set, and the remaining record count is 56509.

Equivalently, this selection criterion could have been applied using a custom macro returning only a list of IDs, and not values. In that case, the macro query would be:

  1. select indiv_id 
  2. from DBO.ACCT 
  3. group by indiv_id 
  4. having (sum(credit_limit) – sum(acct_balance)) > <AMOUNT>

The corresponding selection query is credit_minus_balance_gt_amount(5000). These two approaches produce identical results – subsequently, the design pattern of choice is dependent primarily on the use case. For example, if requirements dictate that the selection criteria (e.g., using less than instead of greater than) be readily adjustable, using a custom macro to return values and then applying the criteria in the selection expression is likely the better technique. This is because custom macros should be designed to be easily used by non-technical users, who should not have to modify the macro definition in their workflow.

4.2 Demonstration B - Derived Fields
Data

This example uses:

  • DBO.ACCT, which contains a collection of account IDs, their associated individual IDs, and additional information associated with each account
  • B_ACCT_INDIV, which is DBO.ACCT, mapped in at the Individual ID audience level.
Description

Create a custom macro that determines the difference between an individual’s total credit limit across all their accounts and the total balance across all their accounts. Create a derived field that reports this difference for everyone.

Implementation

The custom macro in use is the same that was created in Demonstration A, namely credit_minus_balance. An Extract process is configured to select all records from the preceding Select process, which itself selects all individual IDs from the same DBO.ACCT table used by the custom macro:

Then, a derived field is configured to invoke the macro:
Then, a derived field is configured to invoke the macro:

An abridged transcript of the execution log follows. The below execution pattern is specific to this flowchart setup but serves to demonstrate the overall data flow. Create and populate the input table (output of the preceding Select) that goes into the Extract (referred to as table h):

  1. CREATE TABLE UAC_14270_h (INDIV_ID INTEGER)
  2. INSERT INTO UAC_14270_h SELECT DISTINCT INDIV_ID FROM DBO.ACCT

Create the extract table (referred to as table i):

  1. CREATE TABLE UAC_EX_14270_i (INDIV_ID INTEGER, credit_minus_balance DECIMAL(15,5))

Create and populate the table defined by the custom macro (referred to as table j):

  1. CREATE TABLE UAC_14270_j (INDIV_ID INTEGER, zinternal_value DOUBLE)
  2. INSERT INTO UAC_14270_j 
  3.   select indiv_id, sum(CREDIT_LIMIT) – sum(ACCT_BALANCE) 
  4.   from DBO.ACCT 
  5.   group by indiv_id;

A new table will be created as above for each custom macro configured in this fashion. The first column is taken to be the list of IDs at the same audience level as the Extract and does not have to be normalized, i.e., the values need not be unique. The second column is the corresponding list of values. Populate the extract table i:

  1. INSERT INTO UAC_EX_14270_i(INDIV_ID, credit_minus_balance)
  2.   SELECT DBO.ACCT.INDIV_ID, UAC_14270_j.ZINTERNAL_VALUE
  3.   FROM ((UAC_14270_h
  4.   LEFT OUTER JOIN DBO.ACCT ON UAC_14270_h.INDIV_ID = DBO.ACCT.INDIV_ID)
  5.   LEFT OUTER JOIN UAC_14270_j ON UAC_14270_h.INDIV_ID = UAC_14270_j.INDIV_ID)
  6.   WHERE (DBO.ACCT.INDIV_ID IS NOT NULL) OR (UAC_14270_j.INDIV_ID IS NOT NULL)

To build an extract table a series of LEFT OUTER JOINs are performed, one for each attribute to be extracted. The input list of IDs (table h) is on the left, and the attribute table (DBO.ACCT and then table j in this example) on the right. This is particularly noteworthy when the custom macro raw SQL does not SELECT DISTINCT or GROUP BY on the ID column, thereby removing duplicates. Thus, due to theLEFT OUTER JOIN, not using aggregation may introduce undesired duplicates in the extracted table. Note that when the Extract is configured to accept a mapped table directly as input, the log does not explicitly state the LEFT OUTER JOIN operations, but the result produced is consistent with that behavior. This is also why the above example uses a dummy Select preceding the Extract.

4.3 Tips
  • For numeric value types, the number of decimal places is specified using the DefaultScale parameter found at Settings → Configuration → Campaign → partitions → partition[n] → dataSources → dataSourcename.
  • As with raw SQL selecting ID list macros, the IDs selected by this type of custom macro must be of the same type (numeric/text) as the audience IDs in the context where the macro is invoked
    • As long as the ID types match, Campaign will perform the intersection and/or join, regardless of whether it makes logical sense – this may lead to incorrect results
  • If the value returned by this macro is not used in comparison (e.g., in a Select/Extract expression), non-zero values are considered TRUE, and zero values or text strings are FALSE
    • IDs associated with the TRUE records are selected
Conclusion

Custom macros are a valuable means of bringing complex functionality into IBM Campaign, and improving performance. Their many benefits include improved modularity and standardization, particularly as they can be leveraged not only by users that have the technical capacity to create them but by anyone familiar with IBM Campaign. Custom macros also help contain complex logic within Campaign, avoiding a mess of integrations with external tools. Altogether, this improves reliability, efficiency and the quality of your campaigns, particularly across organizations.

James Aziz

AI PRACTICE LEAD

With a diverse background spanning healthcare, academic research, enterprise software and now marketing management, James has long been absorbed in understanding and unlocking the potential of technology. At Munvo, James has leveraged this passion to focus on delivering tailored solutions for the financial sector and continues to be motivated to help clients enrich their marketing operations with emerging technologies.

Talk To Our Experts Today

All fields marked * are required

© 2021 Munvo est une marque de commerce de Munvo Solutions inc. / © 2021 Munvo is a trademark of Munvo Solutions Inc.


Daily Health Reports feature

Daily Health Reports feature

Nicole Plouffe

Executive Assistant

Nicole harnesses over 8 years of professional experience in executive and administrative roles to ensure the smooth operation of Munvo’s offices, projects, and processes. By working alongside Munvo’s President, she expertly supports the team and leads a number of Munvo community initiatives. Not only does Nicole dream up cool ideas; she puts them into practice by arranging the right people with the right resources.

Munvo University

The Munvo University is an online learning and certification environment designed to accelerate the training of Munvo consultants on Enterprise Marketing solutions. Munvo University is built on 4 main pillars: Marketing, Technology, Methodology, and Consulting.

Mentoring and Coaching

To help integrate newcomers, Munvo encourages a continual Mentoring and Coaching approach to help facilitate each learning experience. This methodology offers trainees with easy access to Munvo best-practices and additional resources from senior consultants.

Summit Meeting

Munvo Summits are 3-day meetings conducted in a resort a week before the holiday break. Summits are a unique opportunity to review the year’s accomplishments and to share plans and objectives for the upcoming year. Our different offices converge together to share stories, update each other on their latest projects, make connections and have fun.

AI Scale

End-to-end, cloud-based machine learning platforms.

300M+

Customer population

4.3x

Improved accuracy

$50M

Annual incremental value

AI Plugin

Plug-and-Play solutions for your MarTech stack

Struggling with …

  • Low open/click rate?
  • High opt-outs?

Delivery AI

delivers …

  • Increased conversion
  • Reduced fatigue
Struggling with …

  • Low offer acceptance?
  • No feedback loop?

Priority AI

delivers …

  • Increased sales
  • Continuous learning
Struggling with …

  • Ineffective cross-sell?
  • Reduced offer portfolio?

Recommend AI

delivers …

  • Recurring revenue
  • Customer LTV

AI Upgrade

Migrate to more advanced machine learning models (XGBoost, deep learning neural networks)

200+

Models updated

3.4x

Improved accuracy

$255k

Annualized lift per model

Benefit your Business with a Marketing Ecosystem Roadmap

AI Driven Marketing with Munvo AI

Use Cases at a Glance

Leveraging Mobile Marketing with Munvo’s SMS Gateway for Unica

Use Cases at a Glance

Leveraging Mobile Marketing with Munvo’s SMS Gateway for SAS CI

Use Cases at a Glance

Leveraging Mobile Marketing with Munvo’s SMS Gateway

Use Cases at a Glance

Ed Scrivani

Chief Operating Officer

As Chief Operating Officer, Ed oversees the teams responsible for managing professional services, sales, and software products. Ed comes to Munvo with 30 years of enterprise sales and service experience in Enterprise Marketing Management, Online/Mobile Customer Experience Management, Web Content Management, and eCommerce Solutions. Ed brings an extensive background in building teams, coaching and developing talent, and exceeding revenue targets in high growth companies.

Ed started his career in sales engineering and management, selling relational database technology for Informix Software. He then moved to one of the first eCommerce companies, Open Market, where he lead a national team of sales engineers and later ran their professional services practice. He transitioned into direct selling with companies such as Open Text and Oracle. He has spent the last eleven years managing North American sales organizations for companies such as Tealeaf (IBM), Neolane (Adobe), and Quantum Metric.

Ed hold a BS in Computer Science from Hartwick College and a MS in Computer Science from BGSU. 

Julie Bordeleau

Corporate Controller

As Corporate Controller, Julie oversees Munvo’s HR, financial, and accounting functions – from payroll, bank reconciliation, and government remittances, to budget analysis, asset management, and ad-hoc reporting.

With a Bachelor of Commerce in Accounting from Concordia University, she first established her career in accounting firms, and spent 6 years at Fuller Landau where she was the Manager and Director of their small business division. She then moved on to a family-owned real estate company as Controller for 7 years before bringing her expertise to the Munvo team.

Lunch and Learns

Munvo Lunch and Learns help consultants stay up-to-date on various topics by encouraging subject matter experts to share their knowledge with other team members every two weeks over lunch.

Christopher Stanford

Account Executive

As an account executive at Munvo, Christopher is responsible for the business development of Munvo software products, as well as the management of named accounts. In his previous role, Chris managed relationships with clients subscribed to Munvo products, such as CompanionSMS Connector/SMS Gateway, and campaignQA.

Chris holds a Bachelor of Science from the Franklin Pierce University in Business Administration and Management, which he pursued while dominating the baseball field.

Artour Kitbalian

Account Manager

Artour joined Munvo in 2013 as a Consultant delivering services for both the Adobe and IBM (now UnicaCampaign practices to clients across Canada and the US. He quickly earned himself a reputation for providing high-level services while maintaining a relaxed and friendly environment.

Leveraging his consulting experience as a Business Solutions Consultant, Solutions Architect, and Named Account Manager, Artour has been developing Munvo’s client profiles by working closely with them to bring tailored solutions to their needs. The dedication that he demonstrates in each engagement ensures that our clients’ aims remain a top priority.

Before joining Munvo, Artour worked as a Data Migration Consultant. He also holds a Bachelor’s degree in Mechanical Engineering with a minor in Management from McGill University.

Alex Uher

Global Marketing Head

As Global Marketing Head, Alex and his team focus on identifying our customers’ needs and solving them by clearly articulating Munvo’s proven solutions. Alex rejoined Munvo after a career of 20+ years in Marketing Automation, Data-driven Marketing, and Marketing Strategy. He has deep experience working across a variety of industries including FMCG (L’Oreal Paris USA), Retail (Coach, Tommy Bahama), Telco (T-Mobile), and Gaming (Caesar’s Casinos). Most recently Alex developed the Central & Eastern European Marketing Strategy practice for Wunderman Thompson in Prague, Czech Republic.

Alex holds double majors in Business Economics and International Business from the Kelley School of Business, Indiana University – Bloomington.

 

Dave Ariely

Marketing Transformation Services Lead

Since joining Munvo in 2013, Dave has continuously focused on helping organizations enable their strategic vision through the evaluation and onboarding of key value-based technologies and processes. With direct experience in implementing over 25 EMM projects across Canada, the US, South America, and Europe, he specializes in designing business-driven solutions for the Banking, Travel, Telecom, and Healthcare industries. Prior to joining Munvo, Dave has held positions at Rogers Communications, Arthroteq Preclinical, and Forniture Technice Europee – an Italian-based electronics distributor servicing the RF communication sector.

Dave holds a Bachelor’s degree in Computing from Queen’s University, as well as a Master’s in Management from Harvard University. A frequent traveller by nature, he speaks English, Italian, French, Spanish, and Hebrew, and can sometimes be found swimming laps, enjoying a live jazz show, or discovering a new pizzeria.

Anna Ivanova

SAS Practice Lead

Since joining Munvo in 2015, Anna has been a passionate advocate for Munvo’s SAS Practice and today she is responsible for evolving and growing the SAS professional services at Munvo. Anna has over 15 years of experience in both business and technology positions in the Credit Card, Banking, Insurance, E-commerce, and Aerospace industries. She has delivered SAS projects in marketing, analytics, data modeling, and CRM, and in credit risk strategies.

Anna holds a Bachelor’s degree in Computer Science from Concordia University and is currently pursuing a certificate in Data Science and Machine Learning at McGill University. She also holds a Master’s degree in Economics and Administration.

Ajay Bhaga

Technology Lead

As Munvo’s Technology Lead, Ajay facilitates complex deployments that require the integration of multiple technologies. Since joining Munvo in 2008, he has been involved in the delivery of over 35 Enterprise Marketing projects in Canada, the US, Europe, and Asia. He was the pioneer behind the development of Companion, Munvo’s performance and monitoring solution, and also contributed significantly to the enhancement of the company’s cloud-based lab infrastructure. Today, Ajay continues to lead various projects related to cloud integration, distributed architecture, and real-time transactional systems, both internally and with clients.

As a Computer Science undergraduate at the University of Toronto, Ajay was Co-Owner and Lead Developer at Beatcatalyst.com, and subsequently worked for IBM and Toyota.

Brad Penwarden

VP Munvo Products

Brad is the manager of Munvo’s Software Product Development team. Inspired by the software architecture training he underwent at Carnegie Mellon University, Brad is a passionate advocate for agile software methodologies and a quintessential Scrum Master. Since first joining the company in 2009, he’s played a crucial role in more than 30 Enterprise Marketing projects across Canada, the US, and Europe, often managing large development teams on behalf of Munvo clients. A gifted communicator, Brad connects Munvo’s developers and management to smoothly translate complex concepts into colloquial language.

Prior to joining the Munvo team, Brad also worked at Research In Motion (Blackberry) and earned dual Bachelor’s degrees in Computer Science and Business Administration from Wilfred Laurier University.

Andrew Didinchuk

VP Adobe Practice

With 25+ Adobe Campaign implementations serviced, Andrew has become a highly experienced leader in the field. His expertise lies in integrating Adobe solutions with external applications. Over his 5 years at Munvo, Andrew has played a crucial role in building our Adobe business and training the Adobe team from the beginning. In fact, he has been involved in more than 50 on-premise and cloud-hosted Adobe Campaign projects to date.

Prior to joining Munvo, Andrew completed two Bachelor’s degrees in Computer Science and Business Administration at Wilfred Laurier University.

Serge Bohdjalian

VP Unica and SAS Practice

Serge joined Munvo in 2011, bringing with him a wealth of technical and marketing experience. He now manages a Professional Services team specialized in marketing solutions and digital analytics.

For ten years, Serge worked at Matrox Graphics, first as Lead Technical Writer and then as Senior Marketing Manager. He was also the Chief Technologist and owner of Memidex, a word-reference aggregation website with nearly one million pages of content.

Serge holds a Master’s degree in Business Administration from the John Molson School of Business, a Graduate degree in Computer Science, and a Bachelor of Arts in Communications from Concordia University.

William Brooks

VP Salesforce Practice

As the Vice President of Salesforce Practice, Wil is responsible for developing and assisting new lines of business in addition to overseeing the recruitment and resource development functions at Munvo. Since joining Munvo in 2011, Wil has been engaged in more than 25 Enterprise Marketing projects for industries such as banking, travel, retail, insurance, loyalty, telecommunications, and healthcare. The depth and diversity of Wil’s experience now informs his work in client management and talent acquisition here at Munvo. In fact, he both consults and facilitates workshops in Marketing Resource Management and Campaign Execution & Optimization.

Prior to joining the Munvo team, Wil worked for Publicis, John Hancock, and TeraGo Networks. In 2007, he earned a Bachelor’s degree in Commerce from the University of Toronto.

Bill Dynes

VP Sales and Alliances

As the Vice President of Sales and Alliances, Bill is responsible for supporting Munvo’s rapid growth, while maintaining successful relationships with the company’s clients and technology partners. Since first joining Munvo in 2014, he has played a key role in establishing strategic agreements with various global corporations, in conjunction with the Professional Services and Product teams.

Bill launched his career as a Software Business Consultant back in 1990 when he worked for GEAC Computer Corporation. He went on to provide services for companies such as Epicor Software, Screenscape Networks, eBridge Software, ADFLOW Networks, Nexterna, and the UR-Channel Broadcasting Company. Bill holds a Bachelor of Commerce from McMaster University.

Johanne Roy

Chief Financial Officer

Johanne is the Chief Financial Officer responsible for Munvo’s Finance, Human Resources, and Procurement departments. Prior to joining Munvo, Johanne began her career as an auditor at Poissant Thibault Peat Marwick Thorn (now KPMG) and worked as a law clerk at McCarthy Tétrault. Johanne later took on the role of internal auditor for multiple multi-national organizations, including Cirque du Soleil Inc. and Quebécor World Inc., and also served as the Chief Financial Officer for two subsidiaries of Group Air Liquide in Asia, where she led the Finance, Procurement, and Information Technology departments.

Johanne holds a Bachelor’s degree in Business Administration (B.B.A.) from HEC Montreal, a Bachelor’s degree in Quebec Civil Law (LL.B.) from the University of Montreal (UdeM), in addition to the titles of CPA•CA, Lawyer (LL.B.), and Certified Internal Auditor.

Mathieu Sabourin

Founder

Mathieu founded Munvo, originally Client Spectrum, in 2005 after two decades of software and management experience. Deeply inspired by Jim Collins’ influential book, Good to Great (2001), Mathieu started Munvo with the determination, discipline, and entrepreneurial drive to build a world-leading company related to Enterprise Marketing Management solutions. He is now supporting the management team and is also involved with strategic initiatives for Munvo’s continued growth.

Prior to Munvo, Mathieu began his career at Andersen Consulting (now Accenture) and then moved on to an eight-year management tenure at Dun & Bradstreet software. He joined the consulting firm Proximi-T in 1994 as Vice President of Software Solutions. Proximi-T would later become Fjord, a division of Cossette Communication Group, Canada’s largest marketing communications agency.

Having previously worked as an Assistant Professor at CIREM-HEC Montreal, Mathieu remains an avid public speaker on topics such as CRM and Enterprise Marketing.

Bootcamps

Bootcamps are intensive on-site, multi-day training sessions focused on different Munvo-related topics such as marketing solutions, consulting best practices and emerging technologies. Bootcamps are a great way to jump-start your career and to get to know the Munvo team.

Agora

Five times a year, Munvo hosts a company-wide Agora meeting to update all team members on various topics such as project accomplishments, corporate initiatives, industry trends, and an introduction for newcomers. These sessions are a great way to bring team members all together and to strengthen everyone’s knowledge in our field.

Alerts and Automated Resolution feature

Alerts and Automated Resolution feature

Munvo Job
Application Form

Fill in the form below indicating job position & preferred location.

Munvo Job Application Form

Fill in the form below indicating job position & preferred location.

Required fields*

Flowchart Kill feature

Flowchart Kill feature

Cell Waterfall feature

Cell Waterfall feature

Log Analysis feature

Log Analysis feature

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Tell Us About Yourself

Tell Us About Yourself

(All fields are Required.)

Nabil Taydi

President

As President, Nabil oversees Munvo’s executive team responsible for managing professional services, sales, software products, and financial operations. Since first joining Munvo in 2006, Nabil was instrumental in developing a wide range of marketing solution software practices. He was personally involved in deploying marketing solutions for more than 35 global corporations in Canada, the US, Europe, Asia, and South America. Nabil was also a driving creative force behind the development of campaignQA, Munvo’s solution for ensuring more efficient Quality Assurance processes and data validation.

Nabil holds a double Bachelor’s degree in Organization Management and Computer Science & Engineering, as well as Master’s degrees in e-Commerce and Business Intelligence.