This paper presents an optimization model for the selection of sets of clients that will receive an offer for one or more products during a promotion campaign. The complexity of the problem makes it very difficult to produce optimal solutions using standard optimization methods. We propose an alternative set covering formulation and develop a branch-and-price algorithm to solve it. We also describe five heuristics to approximate an optimal solution. Two of these heuristics are algorithms based on restricted versions of the basic formulation, the third is a successive exact k-item knapsack procedure. A heuristic inspired by the Next-Product-To-Buy model and a depth-first branch-and-price heuristic are also presented. Finally, we perform extensive computational experiments for the two formulations as well as for the five heuristics.