I am publishing component presentations containing Keyword fields, which get indexed by SmartTarget. I will create promotions which select and filter the components by keyword, and want to create a dynamic filter which is based on a trigger value provided in the SmartTarget query.

To illustrate this with an example, my content schema uses has an Interest field with Keyword values Golf, Games or Girls. My web application passes interest trigger values into the SmartTarget query of golf, games or girls. I set up a promotion which selects all banners in a particular folder, and filters on the Interest component field matching the interest trigger value passed into the query.

The trigger values correspond to the Keyword key (not URI) so is this going to work, or is it only possible to do a dynamic filter based on keyword URI? If not, is there some way I can hack around this?

1 Answer 1


It's not going to work like that. It's also not going to work directly if you specify the TCM URI, due to restrictions in Fredhopper. Fredhopper doesn't allow some of the characters used in TCM URIs within attribute names, so we had to change them to underscores instead.

The best workaround I can think of is to look up the Keyword using the Content Delivery API and get its TCM URI that way. You will then need to change the colon and dashes into underscores for it to match the attribute value within Fredhopper. Check the ID of the attribute within Fredhopper to compare.

You may also need to create a separate copy of the trigger specifically for the filtering, if you also need to use it as a trigger for Promotions. This is because the Promotion does use the normal TCM URI value as the trigger value (the limitation is only there for attribute names).

  • Ugh... sounds messy. I was wondering if a simpler solution is to somehow extend the publishing/deployment process to add an additional field with the keyword key - this could then be used as the filter column
    – Will Price
    Jul 16, 2015 at 11:52
  • That might be an option too. You would then need to edit the Kettle job to add the field. You can take a copy of STJob.kjb and configure the name of your version in the SmartTarget configuration file. Be warned, though, that it's not always as easy as it seems to get such a job working as intended. Jul 16, 2015 at 12:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.