Skip navigation

Don't Overlook or Downplay your Calls-to-Action


Your organization’s homepage is one of the most important marketing tools of your business. If you are reading this, I suspect that lead generation is an important part of your business as well. If so, Calls-to-Action (CTAs) are critical.


A homepage should do more than just offer basic information. It should compel a visitor to do something like oh I don’t know… take action! The last thing you want is to have every potential prospect abandon your page.


If your homepage is too complicated you won’t engage the visitor effectively.   If your CTAs are hidden or you have none, you’re missing a valuable opportunity to engage with them and build your database organically.


Your job as a marketer is to lead them to the information they need and what they are trying to find.


When designing or redesigning your homepage define your goals as an organization and as a marketer.  What is the purpose of your organization, what do you want them to do once they land on your homepage, and what should your homepage say about you?


What is your goal for visitors?


  •     Buy a product or service?
  •     Downloading a white paper or case study?
  •     Sign up for a newsletter?
  •     Attend webinars or events?
  •     Connect with the organization through social media outlets (LinkedIn, Facebook, Twitter, Pintrest, RSS Feeds, etc.)?


Think of the possibilities and define your goals.  At the end of the day you want to turn your visitors into prospects and nurture them through the funnel.


Consider these best practices for your Calls-to-Action:

  •     They should pop off the page and contrast with the rest of the page.
  •     Placement above the fold. You have gone through the work of setting up your Call To Action so why bury it?
  •     Limit the click-throughs.  Get them to your form as soon as possible without bypassing important information.

Example: Suppose you have included your webinar “bling” on the homepage. The visitor clicks on the image and you drop them on a page with a list of webinars. They click again on the webinar of interest. You then direct them to a landing page with a description of the webinar and link them to “register now” page.  At this point, you have irritated your visitor. This is when abandonment rates soar.  Remember in click-throughs, “Less is More.”

  • As a general rule for your homepage design include whitespace. You want to keep your visitor focused. Keep in mind that most visitors won’t remember anything after 5 seconds. It may seem harsh, but it’s true.

After working as a marketing professional for a number of years, the biggest challenge in my role was to track revenue attributed to my marketing campaigns to calculate the return on marketing investment-- I wanted to show the value marketing brought to the organization.

As a marketer, especially in the B2B world, you know it can take many months and engagements before a sale is made. For example, a prospect learns about your product  / service by: visiting your website, reading an article on your social media site, downloading your white paper, attending a tradeshow or webinar, and all of this takes time. Now, you have worked hard to get your prospects to attend your events and FINALLY a sale has been made, but you want some credit for the sale. How do you associate contacts from your marketing campaigns with sales that have been made through their influence? This is done through revenue attribution.

There are many ways companies choose to attribute revenue to sales that have been influenced through your marketing qualified leads. For example, in Eloqua, a company can assign 100% percent of the total attributed revenue to when the lead responded to the first marketing campaign they entered, or a company can assign 100% of the revenue when the lead responded to the last marketing campaign they entered, and others choose to weigh each marketing campaign touch point evenly. Try using the Eloqua 10 Lead Scoring module to make attributing revenue easier, here’s how:

In E10, Eloqua customers can now dynamically assign scores to all leads in your database based on the criteria you choose. You can weigh the importance of each criterion to determine the score you assign your leads. Scores are based on two alphanumeric criteria: Profile and Engagement. Profile criteria are data you can find on your leads’ business card such as job title--valuable profile criteria is given an “A” and less valuable a “D.”; Engagement criteria are buying behavior data such as if a lead attended a tradeshow or downloaded a white paper – valuable engagement criteria is given a “1” and less valuable a “4.” So, a “hot lead” would be an “A1” and a “cold lead” would be a “D4” score. You can assign scores based on what marketing campaigns your leads attended. Eloqua Team and Enterprise customers can run multiple scoring modules concurrently, and your lead scores can pass to your CRM systems.

So how does Eloqua Lead Scoring relate to revenue attribution? Since you can create multiple models, you can have Model A score the likelihood the lead will turn into a sale and pass the “A1” leads to your sales team, AND, you can have the scores in Model B be associated to the percentage of revenue you want to associate your marketing campaigns to a sale. Since revenue attribution is based on marketing engagement activity anyway, your lead score engagement criteria would be the most important metric to track.

Where do you start? Have a look at your business objectives and understand your main marketing touch points to determine the most valuable types of campaigns (email, social media, Webinars, conferences etc.). Then, leverage the Eloqua Lead Scoring module to assign your profile and engagement criteria to determine your revenue attribution, here you can weigh the level of importance of your marketing campaigns / activities and assign a score to the metrics you choose to determine the share of marketing generated revenue. Good luck driving results!


Lead Scoring

Eloqua10 Lead Scoring Resource Center

Revenue Attribution

After all my years at Eloqua the discussion I always find myself coming back to with my clients is, "So please tell me you're using page tags... right?" I was prompted to write this because as much as this is awesome functionality, I don't think page tagging gets it deserved notoriety.


Eloqua, with the web tracking scripts are monitoring your website and creating digital body language for you to interpret on your prospects and provide web analytics.  Page tagging takes the capturing of digital body language and allows you to make real time, personalized work flows to enhance your end users web experience with you! I wanted to share a few examples of where this is better than sliced bread and would love to hear how you in your organization may be using page tagging as well!

  1. Page Tagging to Enrich Lead Scoring: The concept of a High Value Web Visit speaks to an end user visiting pages that may be perceived as higher value to your marketing and sales organizations than others. This does hold true - let's think about a contact who has expressed interest on your job page versus a contact that has viewed four of your product pages and the pricing page. Our lead scoring program should take this into consideration.


How do we do this: Go into Settings and select Page Tagging found on the Website row. Once you've clicked - you'll see this screen:

Page Tagging 1.png         

Click on Page Tagging and go ahead and create a new Page Tag. Name your tag - I recommend here making it easy to recognize. Your screen will look like this. Le'ts start adding relevant pages by clicking on Add Pages on the right! Once there, you will be guided to your site map. Select the pages and hit ok!  After completing, you will see your pages show up in the Web Page URL list. You're almost complete!

Page Tagging 2.png

You can now add this element to your scoring program! With Eloqua's Lead Scoring Model, it is very easy to add this page tag in, but also decide what score should be allotted to a contact meeting this behaviour. This is going to be under Engagement tab - You'll notice there is an option to add to your scoring model, 'Visited Pages with Tags.' Double click to bring this element over. Drag the desired score and then double click on the entity to include your Page Tag. Once you begin to type your Page tag will appear. Select, choose your time parameter and what percentage of the criteria weighting you would like to apply.

PageTagging 3.png

Note: You can continue to add in page tag criteria in this window as well!


Once you have hit save, you have now effectively added digital body language to your scoring program!

Page Tagging 4 .png


     2.   Page Tagging to Enhance Personalized Email Experience: You can also take this same concept and deploy a campaign based on online activity. If a known contact has displayed interest by visiting high value pages on your website this may be a valuable opportunity to pursue the discussion further. Page Tags can also be used in a segment for a email campaign! In a few quick steps, you can develop a campaign personalized to your end users web behaviour.


Start by creating a new campaign and drag onto the canvass your segment and email properties. Double click on Segment and create a new segment

Page Tagging 5.png


When in your new segment, select from your options a filter find VISITED PAGE TAGS in your filter criteria and drag and drop into your segment window. As before, double click on the criteria and insert the relevant page tag.

page tagging 6.png


Now that this is complete, you'll see that your Segment turns to green. I recommend using a wait step so that the end user is not receiving an email immediately. Add in your relevant and related email and you have now created a campaign based on your end users online behaviour!

page tagging 7.png


Not only is this better than slice bread, but may be even easier than sliced bread!>

Hi Team,


We have requriment, like we need to extrect the report data on daily basics and need to sens some external user with csv or excel fromat.

is there any way make this  process Automate ?

Please guide me on this ...


Thanks in advance,


Last week we completed our SmartStart Foundations Workshop for our new E10! Overall I am very happy with how the week turned out.

In my last blog post about day one Dual CRM Integration with Eloqua: SmartStart Workshop Day 1 - (aka trying to fit an elephant into a cat carrier) ,  I admitted that for day two we needed to come back down to Earth and start getting stuff done versus debating how we want to do things. I am proud to say I kept my promise for most of the day and we managed to be extremely productive! We connected both CRM sandboxes to our E10 instance and did some successful initial testing. 

Day three however, I made the decision there was one thing I could not leave on the table and I had to put the brakes on!

The most challenging aspect of setting up a new Eloqua system with a dual CRM integration is deciding how to set up the contact table. How many fields can be mapped to both CRM systems and how many system-specific fields will be needed? Is there a better way?
When we started this process I wanted to leverage custom objects as much as possible versus filling up the contact table with fields that can be mapped to only one of the two CRM systems in the integration. Initially I was told that custom objects cannot write data back to SFDC – a fact that would dramatically influence our database structure. After some lengthy discussion I am hopeful we may have found a work around! I am waiting on sid.batra to connect with nathan.lichte to verify that what we came up with will work.


While we wait for the final verdict on how much we can leverage custom objects, there are a lot of other decisions that need to be made and work to be done:

1. Getting the basics right.
Thank you to all my Topliner friends for your amazing suggestions in: Re: What would you do differently if you got a clean instance of Eloqua and could start from scratch?
I have already tackled naming conventions and folder structure.  I am working on my clean house plan to ensure things stay in good order. And everyone’s favorite – documentation – is in my near future.


2. Dealing with duplicates.

It is OK for duplicate contacts to exist across systems – meaning being a contact in both CRM systems. Duplicates in the same CRM system – not OK.

Undertake a massive data cleanse exercise  - after all, we all know how easy that would be to accomplish (said no one ever!).
Decide that any contact that is a duplicate in a single CRM  system is not eligible for Eloqua campaigns.


This one was a no-brainer. We fortunately have an SFDC developer on our team and I am challenging him with writing a program that will help us identify duplicates and tag them accordingly in an automated fashion. Still not sure how that will work out but I still believe this is infinitely easier than dealing with a data cleanse exercise.  This also put the ownership of cleaning up duplicates where it belongs – with the owners of the duplicates. If someone wants to include a contact in a campaign and that contact is marked “not eligible for Eloqua campaigns” then it creates a true “pain” and the two affected “contact owners” can start talking – ideal if you ask me – shouldn’t we be speaking to these people as one company and treating them as one contact?


3. Choosing which contacts to sync with Eloqua and which contacts to keep only in SFDC.
Since we pay by contact in Eloqua, and we will not email everyone with an email address in our SFDC systems, how do we control this? Our easy answer was with a check box “Sync with Eloqua.” We still need to work out the specifics around how this box will get checked in a non-manual way.  I welcome your input if this is something your company currently does.

4. Planning out test scenarios
Before we can flip the switch from our CRM sandbox instances to the live installs, we have a lot of tests to run. The approach I am planning on taking is to identify a group of internal “testers” who can receive emails and take certain actions (submitting a form, clicking through to the website) to help us ensure Eloqua is writing the correct activity data back to the correct system.  Some testers will be unique to a CRM system, others will be “duplicates” so we can see what happens.
My task for the remainder of this week is to come up with a comprehensive list of test scenarios – your suggestions are welcome!   (I think I see another Topliners post in my near future!).

I was asked if you could report on the different lead stages that a contact resides in within Eloqua as well as Segment off of this data. You can definitely do this and the recommended path is using Eloqua's Revenue Suite module. You may also be able to do some more simple funnel tracking using Contact fields and Segments within Eloqua. This is something I've come up with fairly quickly and should only be used as a guide and not a comprehensive solution. There are drawbacks to this approach. As you're using Contact fields, you don't have a historical analysis on the number of qualified leads vs sales accepted leads as an example. The data you're reporting on would be at that exact time unless you are exporting out the data from Eloqua to another system. Eloqua's Revenue Suite keeps all of the historical data for more accurate funnel progression reporting. All that said, here is a possible approach.


1. Define your sales/marketing funnel. This post uses the following funnel stage definitions: Integrated Sales and Marketing Funnel Stage Definition. It's assumed that you have also rolled out lead scoring to determine what is and isn't a qualified lead.

2. Create fields in Eloqua. Create a contact field called "Lead Stage", and a date field for Qualified Lead. It's up to you if you want to create date fields for the other stages. This will allow you to date stamp contacts when they have hit a certain stage in your funnel.

3. CRM integration on Opportunity information. It's recommended that you mirror the Opportunity stages within your CRM to contact records associated with Accounts on your CRM and pass that stage data back to Eloqua. Alternatively, you can pass CRM Opportunity information back to Eloqua assuming that you have associated a Contact Role to the Opportunity. The end goal is to be able to check if a contact is associated to an Opportunity in the CRM.

4. Create Segments/Filters in Eloqua for each stage (explained below)

5. Build the program


This assumes that you have Program Builder and Eloqua Data Tools experience. It's also recommended to take an Eloqua Admin course from Eloqua University.


This is an overview of a completed program:

9-24-2012 6-23-02 PM.png


Program Breakdown:

  • 00 Start - create a program feeder that feeds all contacts into the program on a daily basis
  • Has Opportunity Stage - Create a Shared Filter to check if the contact is associated to an Opportunity. For this to work you are either passing Opportunity data into Eloqua or someone is manually updating Eloqua contact records. I explained above the different options here. You can also add onto this path if you want to split out the specific Opportunity stage.
  • Is a Qualified Lead - Typically, this is dependent on the lead score of the contact in Eloqua. In this example, Create a Shared Filter to check the lead score of the contact.
    • If the lead score is between A1 and C2 (as an example), send the contact to the Update Rule and update the Lead Stage field you created as "Qualified Lead" or however you want to call leads at this stage. You may also want to date stamp the qualified lead record so you can keep track as to when it became a qualified lead.
    • The next step may be to send a quick notification to sales so that they contact the qualified lead. See the following post on a few approaches: Sending Notifications to Sales From Program Builder
  • Is a Prospect - Check to see if the contact has any activity. Create a Shared Filter to check if the contact has submitted any forms, visited the website and/or responded to any emails. Some organizations use tighter criteria (filled out specific forms).
    • If the criteria are met, update the lead stage field with "Prospect" lead stage.
    • If the criteria aren't met, update the lead stage to "Suspect"


That's really it. You can use Segments to report on this data and in the near future, you can use Insight to create some highly customized dashboards. As an added step, you would probably want to feed all "Qualified Leads" to the CRM integration program so this data gets updated in your CRM. funn

I went back to my archives and found that I created a very quick video on how to send notifications to sales reps via program builder. See:

This isn’t a training video (sorry that I'm almost whispering) and if you need help, let Support know.


Here is a sample program using this:

9-24-2012 3-58-00 PM.png

  1. You first need to create all sales reps as users in Eloqua (if they’re not already).
  2. Create the Ownership rules in Program Builder.
  3. Create the Program – See the video
  4. Test it out by having a notification sent to yourself


The main drawback with these notifications in comparison to the form notifications is that you can’t really customize the email very much. To get over this hurdle, many clients are now using the form submission cloud connector which can take advantage of using the "send notification" form processing step. Another approach for SFDC users is to create a SFDC Task in Eloqua that will be sent to the sales rep. This is useful when you have a "create unique leads only" process.

Eloqua has recently released some powerful new tools that will allow you to personalize your emails using data from Custom Data Objects. For example, if you want to send an email that includes their subscription date or the name of the product that was purchased, you can now create email merge fields of these Data Card fields for your emails. For more information check out the following:


Personalize Content Using Custom Data Objects - Video

Personalize Content Using Custom Data Objects - FAQ


This is a major enhancement but because a Custom Data Object can have multiple datacards for the same contact, only values from the last modified Data Card that is linked to the contact will be used for the field merge. Here is an example where this could be a challenge. If you capture a product such as training courses in one Datacard Set, a contact can have purchased multiple training courses. If you want to send an email that indicate that a contact had purchased a certain training course that has a certain subscription ID (say it's the ID needed to register online), how would you populate this ID into an email when it's not the last modified Data Card? This is where the Data Card Evaluator Cloud Component can help you. You can use it to write a value from a Data Card to the Eloqua Contact Record based on the criteria you choose.


  1. If you are new to cloud components you will need to have an Eloqua user with API access and register at
  2. Install the DataCard Evaluator Cloud Connector - see: Data Card Evaluator | Eloqua AppCloud
  3. Make sure you identify the Contact Field that you want to write data to from the Data Card. If you need to, create a new Contact Field.
  4. Create a Campaign (something like this):

9-21-2012 12-36-23 PM.png

4. Configure the Cloud Connector Step

In this scenario I'm going to write the Subscription ID of a certain Data Card to a Contact record (I've chosen to write this to the PromoID contact record) if the Data Card has a certain Product Name.

Step 1 - choose the option below "Field A where Field B = X". This means that it will write data to a contact record from Field A if criteria from Field B is met. We're assuming you have a Data Card Set already with some data you want to evaluate.

9-21-2012 12-22-25 PM.png

Step 2 - In the next step, we defined the Data Card field to evaluate (Field A = Product), the Data Card field data that we want to write to the contact (Field B = Subscription ID) and the Contact field we want to write the data to (PromoID). If Field A equals "Eloqua Training 101" the data will be written to the Contact Field:

9-21-2012 12-26-18 PM.png

That's really it. Run a test to see how it works.


5. Create your email and add a field merge (using a Contact field) to the email with the data that you pushed over from the Data Card to the Contact record.

6. Test and launch your Campaign


The Data Card Evaluator can be used for many purposes - this is just one of them. It will give you an idea of how you can personalize your emails with Data Card information. cl

I've seen and heard this asked many times, and I'm hoping that this will help to answer any future questions surrounding this question. Wait steps and Evaluation time period on Campaign Canvas serve 2 very different purposes. While you can often use a Wait step in place of an Evaluation time period, it's not always appropriate.


Evaluation Time Period

This is the period of time for which you want to evaluate a contact who has not yet met the criteria of a decision. When a contact meets the "Yes" criteria of the decision, s/he will immediately flow through the decision step and into the next step on the canvas. When a contact is evaluated as a "No", the Evaluation time period can hold them in this step to re-evaluate the criteria, and eventually pass them down the "Yes" path once that criteria is met. If the criteria is not met within the evaluation period, that contact will flow down the no path once the Evaluation time period has expired.


Here's the scenario. You send an email, and you want to evaluate whether or not a contact has clicked on that email. Passing the contact from your email step directly into a "Clicked Email?" decision without an Evaluation time period will cause all of your contacts to flow down the "No" path. This is because no one could possibly click the email in the seconds between when the email is sent, and when the contact hits the decision step. You provide an Evaluation time period, allowing time for your contacts to receive and, hopefully, click your message. You could use a wait step before the decision, but you are effectively holding up all of your "Yes" contacts, and preventing them from flowing through your campaign.







A complete hold on all contacts who enter this step. A Wait step will hold every contact who enters this step for the period of time set. Each contact who enters this step will Wait for the set time, regardless of when they enter.


The scenario. You have a Wait step set for 1 week. A contact who enters this step today, Thursday, will leave this step at the same time next Thursday. A contact who enters this same step tomorrow, will not leave this step until next Friday. The wait period is applied to the contact at the exact time they enter this step.






Still have questions? Feel free to post them here, I'd be happy to explain further or provide additional scenarios.

When setting up Eloqua Cloud Apps, there are several configuration options that they all have in common.


One of these is the mapping of the Custom Data Object (CDO) Unique Code.  When you choose to store data in a CDO, the field mapping screen will ask you to map your unique code.


There is always a lot of confusion around this, because it is usually shown on the mapping screen as Display Name.  We call this field Display Name in the apps, because this is the name that we recommend you use for your Display Name Field on the CDO itself.  This is just a recommendation however, as you can set the Unique Code field to anything you wish.  Unless the app specifically tells you to, you will not want to set your CDO unique code to be Email Address.


In order to better understand why you are asked to provide a unique code, let's look at what happens when an app runs.  For this example, let's pretend that we have an app that reaches out to an event system, pulls out all attendees of an event, and pushes them into Eloqua as contact records with linked CDOs.  Here's how that would look:


  1. User sets up the app, providing the following:
    • Credentials for their Eloqua install
    • Credentials for the event system
    • Event to obtain attendee data from
    • Contact Group/List in which to store the returned contacts
    • CDO in which to store the returned data
    • Field mappings, to tell the App which fields to put the data in (this will include the CDO unique code)
  2. The App runs, and does the following:
    • Reaches out to the event system and grabs all the people who attended the event
    • Creates a new or updates an existing Eloqua contact record
    • Creates a new or updates an existing CDO and attaches it the contact record.
    • Adds the contact to the group specified


Now, in order to perform the "Creates a new or updates an existing CDO and attaches it the contact record." part in step 2, we need to have a reference point to determine what is new and what already exists.  For this, we use the unique code.  For most apps, when we create a CDO, we push a combination of Email Address + Event ID into the unique code field that you specify in the setup.  By doing this, we ensure that each contact will be able to have one CDO for each event they attend.  If we were to set up another instance of this app for a different event, we could use the same CDO, because even if the same person attended both events, the unique code will be different.


So, when you're setting up your CDO for use with a cloud app, be sure to keep this in mind.  Unless the app specifically tells you otherwise, create a dedicated field (other than Email Address) and set this to be the Unique Code.

Yesterday was day one of our SmartStart Foundations Workshop, the focus of which is on a dual integration linking Eloqua to two instances of It was an interesting day of conversation and let’s just say that our parking lot could rival the one at Disney World! Thank you to sid.batraravi-2861632 and nghiluu for their eternal patience and guidance!


I tend to be an analytical person who likes to understand all of the potential outcomes before making a decision. Since our time together this week is limited to three days I recognize I need to put that aside and make sure we come out of this week with some actionable steps that can keep this project moving forward.


Step 1: Identify what is truly important and become comfortable with leaving the other stuff off the table

For our business, there are four “non-negotiable” outcomes required of this integration and two items that would be nice to have but not necessary for me to consider the dual integration a success.


Non-negotiable Objectives:

  1. Be able to write activity information onto lead and contact records in
  2. Be able to create a lead in that can be routed using existing workflow rules
  3. Be able to track campaign involvement and tie this information back to the campaigns object in
  4. Keep the contact table in Eloqua as clean and simple as possible while still accomplishing business objectives


Nice to have but not required:

  1. Be able to pull segmented lists exclusively out of Eloqua
  2. Closed loop reporting out of Eloqua to the opportunity level


Step 2: KISS It!

Keep it simple. I have found from past experience that you can get so caught up in everything Eloqua can you that you can over-complicate a project.


While it is important to think about the future, that is what the parking lot is for.


From a technical standpoint, our biggest challenge with setting up the database is not using all of the available fields on the contact record to accomplish advanced segmentation. This would require having “SFDC A” and “SFDC B” specific segmentation fields.  This is not exactly keeping it simple and also violates my #4 requirement.


Today, a lot of our segmentation is accomplished by our internal team using their judgment and logic to place new leads into “buckets” based on their company, title and self-reported primary interest – part art part science. 

I explored the use of custom data objects (CDOs) as an alternative to contact record fields but have found that they only offer a one-way communication with pushing information to the CDO but the CDO not being able to send anything back. I struggle whether or not the functionality of a CDO is what we need because if we capture form submission data for any of the segmentation fields in a CDO, it is essentially stuck in Eloqua and cannot make its way back to (at least in an easy way that does not involve more customization, middleware and flat file transfers.)  With Eloqua, we could let people self-segment on a form versus our current manual process but then we need a way to get this information back over to  So that leaves CDOs in the parking lot.


So its decision time: set up a bunch of contact record fields for future segmentation purposes OR pull marketing lists out of and not rely on segments in Eloqua and waste time setting up CDOs.


Decision: Pull marketing lists out of for now. Only create a custom contact record field if the information is required for a lead to be routed correctly once it is created in  Keep it simple and get the basic integration between all of these systems functioning rather than spending too much time trying to fit an elephant into a cat carrier.


Step 3: Enter day two with a commitment to honoring the first two steps!


Sometimes letting go is easier said than done. With that in mind, I am going to put the key points from this post up on the wall today to remind myself and my team that we must move forward. After all, integrations require constant monitoring and almost always have changes and enhancements along the way!


I will post an update tomorrow about what we were able to accomplish today. I know dual CRM integrations with Eloqua is a topic a lot of people are curious about so hopefully these posts will help somebody.

Also, if you have been down this road before and have any advice, please leave it as a comment in this thread!t

You may be familiar with the old Eloqua redirect URL prefix:


There has been a bit of confusion around this item in my company so I thought I'd share this with the community. Please let me know if I have anything wrong in here so I can update it and be better educated on the subject.


Understanding this URL prefix and it's purpose will help to explain when you should and should not use it.


The purpose of this URL prefix is to add the ability to track a users visit (via Eloqua) to an item on a 3rd party web site (meaning not on Eloqua's servers) that does not contain Eloqua tracking code. To  further explain this, here's a brief look at how Eloqua tracking works. When a visitor views a page on, there is Eloqua tracking code on that page that communicates back with our Eloqua instance to tell it that the person visited the page. We can make this happen since we own and have the ability to add the Eloqua tracking code to each of the pages. This provides us with a clear view of where the visitor goes and what pages they view. (this really helps with prospect profiler and lead scoring)


But wait, what if the visitor goes to a PDF? There's no way to add the Eloqua tracking code to a PDF. Or what if they click one of our links that goes to a 3rd party web site that  does not contain our Eloqua tracking code? What then? How will we track where the user goes?


Well, if the link they are clicking is within one of our Eloqua emails, no worries. You would just check the Insert as Redirect Link checkbox in the Insert/Edit Hyperlink dialog box for your email link:


9-19-2012 4-16-44 PM.png


Well, that's all fine and good for emails. But what about Landing pages? Well, that's where the Eloqua redirect prefix comes in.


Now before you go crazy adding the Eloqua redirect to all of your links, please try not to use it where it's not needed. Remember, if your link points to a page on, you don't need this redirect because there's already tracking code on those pages. Also, if the link points to ANY file that is hosted by Eloqua - landing page, PDF or whatever, you do not need this redirect. Eloqua is well aware and can provide tracking for a visitor hitting any assets within it's own domain.


Also, remember that you don't need (and should not use) the redirect in your Eloqua emails. There's already a facility for that which we've discussed above. Using the redirect link in your emails will render the visual click through map on your emails useless.


Okay, off my soap box. 


So, landing pages. If you have a link in your landing page that points to a non-html file on or any file on a site we do not control and you want to have our Eloqua instance track the visit to that page or asset, this is where you will pre-pend your link with the Eloqua redirect URL. Here's the format of the link:


Now, can you spot what looks like an error in this URL? Hint: ?


If you guessed that we have two question marks in this URL and "That's just wrong", kudos to you. Because in almost all cases you would be correct. Just not this one.


You will still maintain the rule (the first parameter indicated by a ? and all others using the &) for query string parameters in your URL, but it does not apply to the Eloqua redirect prefix. The reason being that Eloqua knows that with this redirect, it's only looking for one parameter (your URL) that comes after the first question mark.


So, just remember to use the normal rules for your URL because once Eloqua sends the visitor on to your URL after tracking the visit, you'll need to have a properly formatted URL for the visitor to go to.


Whew! That's a lot of stuff so let's sum up with some Dos and Don'ts:


  • Don't use the Eloqua redirect prefix URL for:
    • Links in Emails
    • Links on landing pages that go to pages on
    • Links on landing pages that go to anything hosted on Eloqua's severs

  • Do use the Eloqua redirect prefix URL for:
    • Links on landing pages that go to non-html files on (such as PDFs or EXEs)
    • Links on landing pages that go to any page or asset on a 3rd party website that does not contain our Eloqua code (such as Gartner)


That sums it all up. Please comment below with questions, comments or concerns.


- Sterling

I would like to share this free tool with the community. I haven't been using it for long but it already looks incredibly promising and is great fun too!

What is Selenium IDE?


Selenium IDE helps you to record the actions you do in your browser such as mouse clicks, opening documents / windows, submitting forms, verifying text in a page etc. You can then save this and with one click, play back this test case, where by your browser will complete this chain of actions for you. It also provides a huge list of other actions that can be programmed in, many that are more suited to developers. It is also contributed to by Google.



How can it help?


  • Form Testing - Program complex form submission routines such as progressive profiling testing for your browser to complete.
  • Reports Errors - You can program it to stop or continue on encountering errors and it highlights where in the process it failed.
  • Automate your browser to complete actions in Eloqua - Automatically login, click your way around the interface. So far I've managed to send a quick send email and uploaded data automatically in Eloqua 9.
  • If you are lucky enough to have access to developers in your company you can export these test cases into Java, C# or Ruby where I'm sure you could achieve more than I could ever try explain here. There is a long reference section that will help them to understand the long list of commands available to them.



What can't it do?

  • Selenium IDE can't be scheduled to run automatically, but you only need to click just once though to start the process.
  • You can't run conditional actions, but you can replace those by running multiple tests instead so its not a big problem. You can copy and paste the code of the test which is XML.
  • Sometimes it struggles to locate points that you are referencing, but this is more of a problem when using it to control applications (like Eloqua) rather than more simple forms. In those cases when Selenium gets confused and can't locate the element you have recorded, you need to open up the code (firebug it) to explore the code and find something that you can use to uniquely identify the element (such as div id, frame name, image source, or class etc).
  • I don't think there is the ability to check JavaScript Alert boxes that are controlled by an onload function, but it can by other methods.
  • This will only check on the browser it is running it in. There are other software providers that could be run alongside Selenium such as Sauce Labs which can provide a more comprehensive check across multiple browsers and operating systems.



A preview of the interface


Below is the selenium IDE interface. You can see in the top right a little record button and in the "table" tab are the commands. These commands are automatically generated when you hit record and start doing something in your browser. You can then manually add new lines or  that are run one at a time.  Also there is a speed slider at the top the lets you run the process faster or slower. I found that controlling this will help with errors hugely when you first start.


Lets now go through an example...




Lets go through an example


In this example I'm going to record a test case that submits the data in the form, then checks that the download that sits behind it loads correctly

  1. Open Selenium IDE from Firefox
  2. Check that the record button is on, then navigation to the page you want to start at.

  3. Provide a reference so that you can check that the form has loaded correctly

    In this case I right clicked on "first name" and selected "WaitForText". If you don't see this go to "show all variable commands" underneath. In my limited experience of Selenium I've found including wait steps helps you to speed up the test case later on without causing errors.


  4. Input your data into the form. Selenium should be updating the test case as you do this. Then submit the form.


  5. Verify the location. Now you need to add a command in manually to verify location

    Right click just under the last command in the "table" and select "insert new command". Than update as per below. Target and Value should be the URL of the document you are checking

  6. Run the test and check for any errors caused

    I tend to run Selenium at a slower pass. If you include lots of wait and verify steps you can run it at full speed but often its easier to run slower. You also get an error log if anything fails and it will be highlighted in red




The Eloqua String Manipulation Cloud Connector, paired with Regular Expressions, can do some pretty useful things.


Let's take a look at how we can use Regular Expression Replace to take a contact's full name, contained in a single field, and split it up into a separate first and last name fields.


The first step is to create a new campaign.  Since the connector can only act on one field at a time, in order to split the name into two separate fields, we will need two separate String Manipulation Cloud Connector steps.


Here is an example of what the campaign could look like:



The campaign starts out by passing in a segment of contacts, each of which contain a populated First and Last Name field.


Here is what the configuration for the first connector step (which will get us the first name) would look like:




  • Start by choosing a String operation type of Regular Expression Replace.
  • Next, enter the Regular Expression to find as \s+[^\s]+
    • this will select the word immediately following the first space, which in our case is the last name.
  • Leave the Regular Expression to replace blank
    • this will take the last name that is found, and replace it with blank, which leaves us with the first name.


Now let's set our field mappings:



We want to use First and Last Name (which is the contact field that contains the full name) as our Input String, and put the Returned Value into the First Name field.


Once the step is saved, we will set up our next step, which will get us the last name:



  • Start by choosing a String operation type of Regular Expression Replace.
  • Next, enter the Regular Expression to find as (\w+\s){1}
    • this will select the first word, which in our case is the first name.
  • Leave the Regular Expression to replace blank
    • this will take the first name that is found, and replace it with blank, which leaves us with the last name.


Now let's set our field mappings:



We want to use First and Last Name (which is the contact field that contains the full name) as our Input String, and put the Returned Value into the Last Name field.


With the second step saved, we have now completed our program.


Here's what will happen when the campaign runs:


  1. Contacts flow through the program, and arrive in our first cloud connector step.
  2. The first cloud connector picks the contact up, looks at it's First and Last Name field, and writes the first name back to the First Name field on the contact record.
  3. The second cloud connector picks up the contact, looks at it's First and Last Name field, and writes the last name back to the Last Name field on the contact record.


That's it!!!  You now have the names separated into the appropriate fields on your contact record.


Please note, the Regular Expressions used in this example will only work if the name is in the format of First Last.  For instance, TJ Fields.  If there is a middle name, or a first or last name made up of multiple words, the results will not come back properly.

If you're reading this, you're likely aware of the benefits Marketing Automation has to offer for Event Management in terms of better attendance and a more engaged audience.  Today we'll be looking at how you can improve engagement even further by providing something of immediate value as soon as your client registers for your event:  an answer to the questions, where will I stay, or what will I do when I get there?  The answer to the question?  Provide Google Places integration directly on your landing page.




The Setting


In this scenario, you'll want to save the event location to the Contact profile through your registration form.  In my example, I created a custom field called Event_Location.  I pre-loaded my event locations using a picklist on the form, so that the address to the venue is stored as the value for the picklist item, while only the city and state display as the name.  Then I mapped the picklist's value to the contact's Event_Location field.  Once they submit the form, they are redirected to the confirmation landing page.


The Confirmation Page


When you build your confirmation page, you'll want to add a few code elements to your page, in order to display your places of interest.  This is as geeky as I'm going to get.  I promise.


To make things easy and re-usable, I saved my Google Places API page as a template, with the geeky elements already embedded.  As a result, once you've set up the template, you can re-use this ad-infinitum without having to write a single line of code.


First, you'll want to click the Tools icon in the left hand side of the Landing Page Editor.  We're going to make a few modifications to the Page Snippet Tools by clicking on the right-most icon in the Toolbox.  Once you've located the Page Snippet Tools, you'l notice three options at the bottom:  Head, CSS and JS.  For the purpose of this exercise, we'll modify the CSS and JS sections.




The CSS section will allow your page to control the appearance of the map.  In this instance I used white for the map background.  You can change the background color, if desired, by changing the background-color value.  You can find a list of HTML colors here.  You can also change the map's height and width by changing their respective values as well.



      #map {


        height: 200px;

        width: 300px;

        border: 1px solid #333;

        margin-top: 0.6em;






OK, so here's where the geekiest part comes in.  We need to tell the page to call the Google Places API and populate our map.  Most of the code will remain as is, you will want to change the value in the "<span class="eloquaemail">Event_Location_for_GM_API1</span>" section to match your own merge field.  If you want to search for something other than hotels, you'll also want to change the types: ['lodging'] line to match your preferences.  You can select more than one if you wish, just put separate them by commas between the brackets.  Common place types include airport, grocery_or_supermarket, lodging, night_club, parking or restaurant.


<script type="text/javascript" src=""></script><script type="text/javascript" src=""></script><script type="text/javascript">

        var map;

        var infowindow;

        var geocoder;

        function initialize() {


        geocoder = new google.maps.Geocoder();


            var address = "<span class="eloquaemail">Event_Location_for_GM_API1</span>"


            geocoder.geocode({ 'address': address }, function (results, status) {

                if (status == google.maps.GeocoderStatus.OK) {

                    //                    map.setCenter(results[0].geometry.location);

                    map = new google.maps.Map(document.getElementById('map'), {

                        mapTypeId: google.maps.MapTypeId.ROADMAP,

                        center: results[0].geometry.location,

                        zoom: 15


                    var request = {

                        location: results[0].geometry.location,

                        radius: 500,

                        types: ['lodging']


                    infowindow = new google.maps.InfoWindow();

                    var service = new google.maps.places.PlacesService(map);

          , callback);


                    var marker = new google.maps.Marker({

                        map: map,

                        position: results[0].geometry.location


                } else {

                    alert('Geocode was not successful for the following reason: ' + status);





        function callback(results, status) {

            if (status == google.maps.places.PlacesServiceStatus.OK) {

                for (var i = 0; i < results.length; i++) {






        function createMarker(place) {

            var placeLoc = place.geometry.location;

            var marker = new google.maps.Marker({

                map: map,

                position: place.geometry.location,




            google.maps.event.addListener(marker, 'click', function () {


      , this);




        google.maps.event.addDomListener(window, 'load', initialize);




The Map


Once you've updated the Page Snippet Tools, your page has almost everything it needs to display the places of interest.  There's just one more detail left: putting the map's placeholder on your page.  To do this, simply add a text box to your page, right click and choose Edit Source.  Once you've done that, place the following text in the source editor:


<div id="map"> </div>


...and that's it!  As a finishing touch, be sure to size your text box to match the size you specified in the CSS setting (or set it to 200px high x 300px wide, if you haven't changed the setting).  The end result should look something like the photo below.  I hope you've found this helpful and interesting.  Please feel free to post your questions or comments!



As many of us already know gaea.connary post The specified item was not found. is awesome!  And personally, as a client, I used it religiously, but I know we have all made slight modifications over time to it for our own use cases and thought we could all share the different ways we have modified it along with what worked versus what didn't work when we were either using it or trying to implement a naming convention internally, so we can all learn from each other.

First my modifications - mainly I liked having the select list line up with the designated columns and since I was an E10 user I removed the E9 columns so attached is one that I thought would be beneficial for other E10 users.

Second what worked and what didn't work for me:

I had a number of repeatable projects from weekly & monthly webinars to bi-monthly white papers.  And because we had so many of these happening on a regular basis I wanted to make life as easy as possible for my team, specifically my graphic designer and copywriter, to adopt my naming convention.  So instead of them having to sift through the various rows and select lists that really didn't mean anything to them I set up separate tabs that were just for them.  The tab only included the one or two rows they needed to focus on and I prefilled as many cells as possible, i.e. for the graphic designer it was the image & file rows and for the webinar graphics the type was pre-selected for WB while the whitepapers were pre-selected with WP along with a few other additional pre-filled cells depending on the business unit.  Helped to make life easier for them and made things less of a headache for me since I knew they were following the naming convention.


But based on our experience I would then recommend when you or your team scope out the projects you decide on the naming convention for the open text fields and from that point on any internal communication regarding the projects should used those naming conventions just so everyone gets used to using those names and it helps reduce the confusion or at least it quickly helps you realize if your naming convention works i.e. if it's too generic is it creating confusion.

I'd love to hear from others about what modifications they have made or what lessons they have learned from implementing a naming convention that the rest of us can learn from to either use or avoid


Hope this is helpful!


At the moment i'm building a new campaign with a A/B test:


E10: How to Run A/B Email Testing on the Campaign Canvas <-- I already build this BP.

But is it possible to automate the A/B testing results into a winning email and automatically add it to the campaign? At the moment you have to de-activate the campaign and select the winning email manually.





We are creating a customized subscription management system, and we are wanting to send a confirmation email after the form has been submitted (will be done automatically) that will allow the person to see a list of their picks inside the confirmation email. We thought about using Field Merges and placing them inside the confirmation email.


Does anyone have any other suggestions? They would be greatly appreciated!E

Do you ever get that little uneasy feeling in the pit of your stomach right before you launch a campaign? I've been running email campaigns for 14 years and I still get that feeling - so much can go so wrong.  Are the links correct?  Is my segmentation logic accurate?  Will it display correctly?


The feeling only intensifies when last minute changes creep into the best-laid email plans. You can quell that uneasy feeling -  use a pre-flight checklist. Here are 7 checks I perform before launching a campaign. Run through these before your next email. If you can’t answer the following 7 questions with certainty, you should stop what you’re doing and re-check your work. Because like print*, once email is out there, its out there (though thanks to Eloqua, you can still update the links after an email is sent).


Pre-Flight Checklist


  1. Does it display correctly? If you’re not using it already, I highly recommend Litmus to test your email. Verify after any major design edit that alters the structure of your email (e.g. adding or removing rows and columns, especially from nested tables)
  2. Did I remember to update the text version to reflect the HTML version? This is a common mistake, especially when creating an email based on a copy of another email
  3. Is the list updated (some email applications require you to refresh the list)?
  4. Is the final send count consistent with expectations (is it 300, not 8 million - remember the NYTimes spam incident)?
  5. Is the subject line correct? Often times a working subject line is added as a placeholder and no one checks it.
  6. No spelling or grammar mistakes? Last-minute changes are usually the culprit here, but never assume that someone else checked.
  7. Do all the links work?


This smaller list should be part of a larger email campaign planning checklist. If you doubt the merits of a checklist, read The Checklist Manifesto and see if it doesn’t change your mind. Happy mailing.


* Prior to my online marketing career, I was an editorial designer at a regional newspaper, working the sunrise edition. After pushing the sunrise edition to press at 2 a.m., I went home for the night. Up early the following morning, I passed an honor box, and stopped in my tracks. The entertainment tease on the front page featured the Sigourney Weaver film ‘Copycat’. Except I had spelled it ‘Coypcat’. I started using a checklist after that.

     HI Team,


On Submitting the form i am getting the following screen could please help me for it.


i am attaching the screenshot for it.



Thanks in advances

As you may well know currently cannot pre-populate check boxes (or single select fields for that matter) using field merge's on Eloqua forms in E10.


However I have pieced together a sample script which will use a web data lookup to populate these fields.  This example in specific is used to populate subscription preferences.  I will be using this sample as a main component in my class at EE12 this year, but I wanted to share it here first and see if I can get some discussion going or some feedback.  I will be going through this specific example in much more detail at EE12.  And yes.. this is also shameless promotion.


This JS code goes on the Eloqua landing page that this form lives on.  Each "field#" is dynamicly assigned by the Eloqua form, so make sure your fields are set and order is set before putting this type of script on your page.  I have left the look up id's in the sample just so you can see what this would look like.  I have also left comment lines in so you could easily see how to add additional lines in.


Also this form looks to see if an email address has been merged into the form, and if it has not you are redirected to a different form so you can enter it in and set the Eloqua cookie.


Feel free to ask questions, but this script is really just intended to be a code example.


Here is the sample:


<script type="text/javascript">

    var _elqQ = _elqQ || [];

    _elqQ.push(['elqSetSiteId', 'SITE ID HERE']);



    (function() {

        function async_load() {

            var s = document.createElement('script');

            s.type = 'text/javascript';

            s.async = true;

            s.src = '//';

            var x = document.getElementsByTagName('script')[0];

            x.parentNode.insertBefore(s, x);



        if (window.addEventListener)

            window.addEventListener('DOMContentLoaded', async_load, false);

        else if (window.attachEvent)

            window.attachEvent('onload', async_load);



<script type="text/javascript">

    var SubLookupRunning = true;

    var g1 = '{23849e08-8f50-45b4-8de4-e0ee3c5016f0}';

    var g2 = '{185a974b-99a8-4cb0-a526-80e28afdd2b4}';

    var g3 = '{43ad1ef2-7650-4436-bb8c-c412eba32b4a}';

    var g4 = '{da6628c9-d170-4eec-8cbb-7c5f52e83b80}';


    //var g5 = '{4949f39f-ca1b-4621-831c-2750402f3a6b}';


var g1Status;

    var g2Status;

    var g3Status;

    var g4Status;

    //var g5Status;


    function SetElqContent() {

        g1Status = GetElqGroupMembershipStatus(g1);

        g2Status = GetElqGroupMembershipStatus(g2);

        g3Status = GetElqGroupMembershipStatus(g3);

        g4Status = GetElqGroupMembershipStatus(g4);

    //    g5Status = GetElqGroupMembershipStatus(g5);





    function GetEmailAddress() {

        _elqQ.push(['elqDataLookup', escape('6a948629-09c5-452e-a258-92b96bbf7849'), '<C_EmailAddress>' + document.getElementById('field0').value + '</C_EmailAddress>']);



    function SetupForm() {


        radioButtons = document.getElementsByName("radioButtons");

        if (g1Status) {

            document.getElementById('field6').checked = true;

            radioButtons[1].checked = true;




        if (g2Status) {

            document.getElementById('field7').checked = true;

            radioButtons[1].checked = true;



        if (g3Status) {

            document.getElementById('field8').checked = true;

            radioButtons[1].checked = true;



        if (g4Status) {

            document.getElementById('field9').checked = true;

            radioButtons[1].checked = true;



    //    if (g5Status) {

    //        document.getElementById('field5').checked = true;

    //        radioButtons[1].checked = true;

    //    }




    window.onload = GetEmailAddress;

</script><script type="text/javascript" src=""></script><script src=""></script>

<script type="text/javascript">

    $(document).ready(function() {


        if ($("#field0").val() == "") {

            alert("In order to manage your subscriptions, we need to verify your email address by sending you a confirmation email with a link to the Subscription Center.");

            window.location = "URL TO BASIC EMAIL ADDRESS ONLY FORM";



        $("#field10").click(function(event) {

            $("#field6").attr('checked', false);

            $("#field7").attr('checked', false);

            $("#field8").attr('checked', false);

            $("#field9").attr('checked', false);

        //    $("#field5").attr('checked', false);



        $("#field6").change(function() {

            $('[name="radioButtons"][value="No"]').attr('checked', true);



        $("#field7").click(function() {

            $('[name="radioButtons"][value="No"]').attr('checked', true);



        $("#field8").click(function() {

            $('[name="radioButtons"][value="No"]').attr('checked', true);



        $("#field9").click(function() {

            $('[name="radioButtons"][value="No"]').attr('checked', true);



    //    $("#field5").click(function() {

    //        $('[name="radioButtons"][value="No"]').attr('checked', true);

    //    });




This article is intended as a basic frame work for how you can create a double opt in process in Eloqua.  This does not tie in to the default subscription management page, but can tie in to any custom subscription page or into a global opt in or opt out process.


Feel free to post any questions and I am happy to address them.



How to Setup Double Opt-in in Eloqua10


Double Opt-in or Confirmation Opt-In (COI) for our purposes involves having the contact in your database confirm that they indeed want to receive email communication from you. This is mostly used for B2C but this is something to consider if you’re targeting the EMEA region or are concerned with certain anti-spam laws.

This document will take you through creating the forms and emails needed to ensure that your contacts have a double opt-in. You’ll first create a general form that will be used to send an email asking for an opt-in confirmation and then you’ll learn how to include this process in your other forms. We also include some possible email text you can use.

The process flow is as such.

  1. 1) Contact will fill out a basic subscription form
  2. 2) Contact will receive and email from Eloqua asking them to confirm their subscription
  3. 3) Contact will then be added to your database, but then marked as unsubscribed thus leaving them in an opted out stage
  4. 4) If  the contact confirms the subscription, by clicking on the link in the confirmation email, they will be subscribed globally to your communications

Here are the steps for configuring this workflow.

1. Build Opt In Confirmation Email

Email should contain some text similar to the message below:

The “click here” action should have one of three options.


2. Create New Confirmation Page

A new customized confirmation page, contain text informing the contact that they will need to confirm their subscription, should be built which will look similar to the page below.  Store the page in the Confirmation Pages Microsite.  Creating a copy of the default form submit confirmation page is a good place to start.

Recommended Text:

Your information has been submitted successfully!

Thank you for your interest.  You will receive an email momentarily to confirm your information.

You will now be transferred to <Company Name> home page. If you are not redirected within 15 seconds please click here.


3. Create Email Sign-Up Form

If you have chosen option (a) or (c) from step 1 you will only need one form to process the initial subscription request.  For option (b) you will need to create a second form which will contain the contact’s email address.

Create a new form with the data you would like to collect from a new subscriber to your email list.  Be sure to collect any data (and make the field required) you wish to use in personalization for the Opt In Confirmation Email.


4. Add Form Processing Steps

Add form processing steps to the initial subscription form do the following items:

  • Update Contacts – With Form Data
  • Send Submitter an Email (select email created in step 1)
  • Unsubscribe Contacts Globally
  • Redirect to Web Page – Select page created in step 2.


These 3 steps will add the contact to your database, send them an email to confirm their subscription, and set the contact to unsubscribed.  This provide you with their information to try resend the confirmation using Program Builder if they do not complete the Opt In process.


(Option B only) Create Form to accept blind for submit.

Create a basic eloqua form which only contains email address. Field should be hidden. The form processing steps for this for would include the following form processing steps. 

  • Subscribe Contacts Globally  
  • Redirect to Website – Default Subscription confirmation Page



5. Create Landing Pages for Form(s)

Create a landing page to host your newly created Eloqua subscription form, and if option (b) was selected create a second page with your form for the blind submit discussed in step 5.  An alternative to this would be creating or integrating form on your current website.


6. Test

Now that you have configured your assets its important to test your workflow.   I recommend testing this with an email address that does NOT exist in Eloqua currently.

  • Fill out your subscription form and ensure you receive the desired email. 
  • Search for the contact record in Eloqua and make sure they show in the database but have a status of unsubscribed.
  • Click the confirmation link in your email. 
  • Reopen the contact record in Eloqua and make sure the contact is now subscribed globally.

Everyone seems to be talking about “engagement” these days.  As marketers we need to create engaging content to make sure our prospects and customers remain engaged.  We are constantly figuring out ways to re-engage dormant leads.  Marketers that understand how to do this and simultaneously create programs that drive closed-won opportunities for the sales pipeline are the ones with the winning formula.  That’s because their programs embrace engagement as an interactive conversation with a strong emphasis on the follow-up experience.  They ask themselves, what do I do once I have the visitors and what will my response engagement look like?


A lot of B2C companies embrace this and are able to excel in this arena.  They know that every additional second you spend on their site makes you more likely to purchase. To keep your attention and keep you engaged, they begin outlining pieces of content, related products, and open new pathways for you as soon as you arrive. B2C companies have a clear idea of where your intent lies (i.e. if you’re looking at a shirt they can show you color, print, size or related styles).


I’ve noticed that a lot of B2B companies struggle with this and have over complicated websites that end up as content repositories for products and features.   Little thought is given to the overall experience and this is where the opportunity to engage prospects falls flats.  The person who arrived at your website has some intent, they clicked on a link and have some preconceived idea of what you’ll provide them.  And you’re goal is get them to keep saying yes by taking the next step, whether that’s reading the next line of text or picking up the phone to schedule a demo.   Don’t lose the momentum you've built!

What are your thoughts and how have you improved your website to make it a better user experience?

Slideshare can be a really great lead generation source, so it's up to us marketers to figure out how to best message those leads and follow up accordingly (and promptly!). Eloqua has made this easier with the Slideshare Cloud Connector. Assuming you understand the basics of Eloqua’s Program Builder, I’m going to walk through the steps to get you set up with a basic Eloqua-Slideshare program to make sure that your Slideshare leads are being touched and receiving the information they’re looking for.

Setup Contact Fields

Make sure that you’ve configured all of the contact fields according to the information that you’re gathering from Slideshare. If you follow the document below, you’ll notice that the default contact fields are Slideshare Lead Campaign ID, Slideshare Mechanism, Slideshare Slideshow ID, Slideshare Message, Slideshare Rating, and Slideshare User Comment. To make the actual connection and integration, follow these steps outlined on Topliners: Installing and Using the SlideShare Feeder

Create Follow-Up Emails

Before you go into Program Builder, think about the types of follow-up email you need. In my case, we have six different campaigns and individual requests so I made six follow-up emails.


Locate and Note the Slideshare Campaign IDs

You can find the Campaign IDs in Slideshare by logging into your Slideshare account, viewing your Pro Dashboard, and clicking on each of the campaigns. The corresponding Campaign ID will be seen in the URL string, pictured below.


Create a Shared Filter

In order to create a proper Program Builder Feeder, make sure that you pull all of your Slideshare Leads into a shared Filter. I did this by pulling in all users whose Slideshare Campaign ID contained a 1. You will need to find a common denominator in your campaign IDs. There are alternate ways of pulling these users into a Shared Filter, and this is merely one way.


Build a Program!

As mentioned previously, our Slideshare campaigns account for six unique requests, so this program below accounts for each of these. But you’ll notice that this program has steps that could be repeated to go on forever, depending on the number of Campaigns you have set up with Leadshare. Here is an overview of the entire program and I’ll go into a more detail below.

(Click to view PDF version)


Configuring Decision Rules

      1. Create a Decision Rule to follow your Enter Program Step.
      2. Give the Decision Rule a name to correspond with your Campaign or Campaign ID.
      3. Select the rule Contact Field Comparison, choose Slideshare Campaign Lead ID as the contact field, and set the parameters to ‘is equal to XXXXX’.       
      4. Configure the Yes path by adding a New Step. If you’re using a follow up email like we do, follow these  steps. Otherwise configure this step to perform the appropriate follow-up action. Give your action a name corresponding to the specific campaign, and select Send Quicksend Email as the action. At this point you select the corresponding email. Note: I left all Email Options and Override Settings alone but you should configure those to your organization’s or client’s needs.
      5. If you have a second Slideshare Campaign ID, configure your No path by sending to a new Decision Rule, and complete steps 1-4. Repeat these actions to account for every Campaign ID.
      6. Once you have created Decision Rules for each Slideshare Campaign, the final Decision Rule No Path should be set to Action Step: Remove From Program. This would send anyone who did not have one of your set Campaign IDs to exit the program and not receive follow-up.

Note: If you have CRM integration, at this point you would want to add a Step to send to your CRM Update program.


Clearing Slideshare Lead Campaign ID

In order to account for allowing the lead to return to Slideshare, make a different request, and receive proper follow up, the next step is important. You will want to clear out the Slideshare Campaign ID.

      1. Send the Send Campaign Email Step to a new step and select the Action 'Update Contact/Prospect/Company Data'. You will be prompted to select or create an Update Rule.
      2. Select Create New. Give your rule a name (mine is Clear Campaign ID), click ‘Add Update Rule’ and select the field ‘Slideshare Campaign ID, and select ‘Set to Value’ from the Select an update action drop down menu, and enter value 0. Click apply. Your screen should look as it does below. Hit Save and Close.       
      3. Notice that the Edit Step Path screen has the proper Update Rule selected, and you can Save and Close the screen, shown below.      

Sending Lead to Proper Nurture Campaign

This is the level and stage at which you will send the user to your nurture campaign. For the sake of simplicity, my example shows this step as sending the lead to a contact group for the leads to get sent the organization’s newsletter. However, you should configure this step as appropriate to your organization’s or client’s needs.


Remove Users from Program

To ensure that all users are able to re-enter the program when and if they submit a new Slideshare lead form, all of your final steps should remove users from the program. Also, make sure to have ‘Allow members to enter the program multiple times’ checked in your Program Details.


Slideshare is a fantastic channel to publish and consume content. The Eloqua Slideshare Cloud Connector gives marketers a powerful tool for connecting with and engaging users. I look forward to hearing your feedback in using this information.


**EDIT (October 30, 2012): Upon a recent release, the Slideshare Connector began updating all leads which, if you had the above set up, would send out the requested information to all Slideshare contacts every day when the connector updated. To handle this, we ended up modifying the Feeder to only pull in contacts who were Dynamically Created: Today as well as making sure that contacts could not enter the program more than once. We found that our business rules allowed for this, as it was a very rare case that someone would return to Slideshare to request an additional piece.

Eloqua Admins, ever wish you could remove your global unsubscribe and hard bounce contacts from Eloqua, but still keep them in your CRM so you have the sales activity history without having to worry about them coming back into Eloqua through your Auto Synchs?


Here’s a great way to automate the process to prevent the contacts from coming back into Eloqua and easily create a nice clean list of records to be deleted from Eloqua.  Keep in mind the Eloqua Global Unsubscribe and Hard Bounce email addresses are tracked in a separate table so should that email address ever come back into your Eloqua instance via a list upload or form submit it will immediately be tagged as global unsubscribe or hard bounce so you will not lose that information.  Here’s a great post explaining exactly what information is retained - Deleting contacts from your Eloqua10 database.


The basic concept of this program is mark the record in Eloqua as Do Not Synch, push that value back to your CRM, then use a filter on the Auto Synchs to prevent the record from being synched back into Eloqua and finally delete the record from Eloqua.


Now that you have the background on how this works, here are the details to build it out (note this requires detailed knowledge of your CRM Integration and knowledge of Data Tools & Program Builder in Eloqua):


CRM Requirements:

  • Create the following Boolean/checkbox  fields in your CRM at both the lead & contact level – “Do Not Synch with Eloqua”


Eloqua Requirements:

1. Create the following checkbox field in Eloqua – “Remove from Eloqua”

Remove from Eloqua field.png

2. Map the fields for Auto Synchs:

          a. Go to the Setup->Integration->Inbound->Management->Auto Synchs-> Get Leads->Field Mapping->Edit->Options->View Field Selection & click the check box next to Do Not Synch with Eloqua then map the “Do Not Synch with Eloqua” SFDC field to Eloqua field “Remove from Eloqua”  (note the image below shows the Auto Synchs for a SFDC integration)


edit field mapping - view field selection.png

Lead mapping.png

            b. Repeat for Get Contacts Auto Synch

contact mapping.png

3. Create the filters for Auto Synchs

    1. Go to the Setup->Integration->Inbound->Management->Auto Synchs-> Get Leads->Transfer Values->Edit->Edit->Options->View Filter Details & add the following filter “Do Not Synch with Eloqua” equals “False”

transfer values.png

Auto synch transfer values.png

External Calls filter edit.png

            b. Repeat for Get Contacts Auto Synch

4. Map the fields for updating the CRM

    1. Go to the Setup ->Integration->Outbound->External Calls->Send Data->Contact->Update Contact->Options->View Field Mapping and map the “Do Not Synch with Eloqua” SFDC field to Eloqua field “Remove from Eloqua”

External Calls.png

Do Not Synch to Eloqua field mapping.png

          b. Repeat for Leads (Lead->Create Lead) & (Lead->Update Lead)

5. Create the following Shared list (individual contacts) – “To Be Deleted from Eloqua”

6. Create the following Segment – “To Be Marked Remove from Eloqua”

    1. Create a filter named “Remove from Eloqua Feeder” using the following attributes
      1. Marked as Hard Bounceback after date (use a date prior to your implementation date so you won’t have to edit the date moving forward & you will capture all records)
      2. Globally Unsubscribed after date (use the same date as the Hard Bounceback)
      3. Compare Contact Fields (Remove from Eloqua field is equal to 1 – this filter will be used later and this will prevent records from running through the program endlessly)
      4. Compare Contact fields (CRM LeadID is not blank - this verifies that the contact is already in your CRM)
      5. Compare Contact fields (CRM ContactID is not blank - this verifies that the contact is already in your CRM)
      6. Group filters i and ii using the OR comparison
      7. Group filters iii and iv using the OR comparison
      8. Filter ii should have And comparisons tying it to the two groups above
      9. The final filter is visible in the attachment to this post           

            b. Share the filter (be sure to use the shared filter)


7. Create the following Update Rule to mark the record accordingly

    1. Go to Contacts->Data Tools ->Update Rules->New Update Rule
    2. Update Rule Set Name – “Check Remove from Eloqua Box”
    3. Set the “Remove from Eloqua” field to 1 (remember 1 is the value for checked)
    4. A completed update rule is visible in the attachment to this post


Now you'll need to build the Program in Program Builder that pulls all of the pieces above together:

1. Setup->Program Builder->Create New Program

          a. Name the Program “Mark the Remove from Eloqua Box”

          b. Create the first step “000 – Start” – the default action will be a pass through step

          c. Create the second step “100 – Mark Remove from Eloqua box to True” – the default action will be to Update Contact/Prospect/Company Data using the update rule created above under #7 “Check Remove from Eloqua Box”

          d. Create the third step “200 – Add to Shared List” – the default action will be to Add Contacts to a Contact Group, specifically you’ll add them to the contact group (shared list) created above under #5 “To Be Deleted from Eloqua”

          e. Create the fourth step “900 – Send to CRM Update Program” – the default action will be to Move to Another Program, specifically you’ll want to move to the “000-Start” step of your Update CRM program

          f. Create the fifth and final step “999 – Exit Program” – the default  action is Remove from Program

          g. The final program is visible in the attachment to this post


2. Create the Feeder for the Program

          a. Feeder Name “To be Marked Remove from Eloqua”

          b. Source of program members = Contacts in Filter

          c. Contact Filter = “Remove from Eloqua Feeder Filter”

          d. Evaluate Every 4 hours

          e. The completed feeder is visible in the attachment


Finally here is an easy process for deleting the records from Eloqua:

  • Go to Contacts->Shared Library-> and open the shared list created above “To Be Deleted from Eloqua”
  • Export the List -> Save to your computer
  • Go to Contacts->Contacts->Upload
  • Upload the list in #2 with the import purpose to delete the records.
  • Follow these last few steps for deleting records from Eloqua on a regular basis, such as weekly, monthly, quarterly, etc. depending on your business needs.


Advanced Options:

This concept can be used for a number of additional items, such as left the company, bad data/junk, specific record statuses or types, etc. but the most important concept you’ll need to understand is that the updating/marking of the record as do not synch must first occur in Eloqua, otherwise your autosynch filter will prevent the record from coming back to Eloqua, thus not updating it in Eloqua.  For example, if you change a record from active to left company and marked it as do not synch in your CRM, the filter will prevent the record from coming into Eloqua, thus the record in Eloqua will remain listed as active and never be updated to left company.

Filter Blog

By date: By tag: