Use SOQL Queries

If you're comfortable with SOQL queries and you want to pull in a custom list of object/records from Salesforce, we have a way for you to write your own queries.

The result of the queries will be a list of records, so you need to setup a loop in your document.  Then in your WebMerge Mapping, you'll find that loop merge field, and you'll select << SOQL Query >> from the dropdown.

Then you'll see a text box where you can enter your query:

query.png

 

Use field values in query

This query can include fields from the main object you're pulling data from in the Mapping (ie the Account record).  Our system will search for this format in the query:

:FieldName

So for example, if you wanted to include the Account's Name in the query you would use:

:Name

 

Using the query result

The result of this query (ie the data that's sent over to WebMerge) will be in a list/array that you can loop through in your document.  Inside the loop, you'll use the subfields that you queried to print the values.

Here's an example:

{foreach from=$opps item=_row}
    {$_row.Name}
{/foreach}

Have more questions? Submit a request

4 Comments

  • Avatar
    Priya Y

    Hi,
    For pulling data through SOQL queries, it has been told that we need to set up a loop in the document and then map with <> in Salesforce field mapping.
    Could you provide with the syntax?
    Ex: I have used the loop below in my document
    {foreach from=$contacts item=_con
    {$_con.Name}
    {/foreach}

    But while doing mapping for contacts I am not able to see > in Salesforce fields.

  • Avatar
    Jeremy Clarke

    Hi Supriya,

    In your WebMerge Mapping, next to your "contacts" field, type in "<".

    You may have to upgrade to the latest version of our managed package. This was released last week.

    Thanks!

  • Avatar
    Adarsh Singh

    Hi Jeremy,
    I am using SOQL for field mapping, this below SOQL am used to get records.

    SELECT Id, Name, Price_Book__c, Product__c, Price_Book__r.Id, Price_Book__r.Name, Product__r.Id, Product__r.Name, Product__r.Product_Name__c FROM Price_Book_Entry__c where Price_Book__r.Name = :LoopName

    In above image, LoopName is a merge field, mapped with 'Price Book Name'.

    but am not able to get any records due to incorrect filter parameter. can you please let me know the correct way to pass a dynamic value in where clause in SOQL.

    thank you

    Edited by Adarsh Singh
  • Avatar
    Jeremy Clarke

    Hi Adarsh,

    Instead of :LoopName, you need to use the API Field Name for the field that's on the primary object of your mapping (if the field isn't on your primary object, then you'll need to create a new custom field and use a formula to set the value). It should look more something like this:

    SELECT Id, Name, Price_Book__c, Product__c, Price_Book__r.Id, Price_Book__r.Name, Product__r.Id, Product__r.Name, Product__r.Product_Name__c FROM Price_Book_Entry__c where Price_Book__r.Name = ':Loop_Name__c'

Please sign in to leave a comment.
Powered by Zendesk