The concatenation product is one of the most important operations on regular languages. Its study requires sophisticated tools from algebra, finite model theory and profinite topology. This paper surveys research advances on this topic over the last fifty years. The concatenation product plays a key role in two of the most important results of automata theory: Kleene's theorem on regular languages [23] and Schützenberger's theorem on star-free languages [60]. This survey article surveys the most important results and tools related to the concatenation product, including connections with algebra, profinite topology and finite model theory. The paper is organised as follows: Section 1 presents some useful algebraic tools for the study of the concatenation product. Section 2 introduces the main definitions on the product and its variants. The classical results are summarized in Section 3. Sections 4 and 5 are devoted to the study of two algebraic tools: Schützenberger products and relational morphisms. Closure properties form the topic of Section 6. Hierarchies and their connection with finite model theory are presented in Sections 7 and 8. Finally, new directions are suggested in Section 9. 1 The instruments This section is a brief reminder on the algebraic notions needed to study the concatenation product: semigroups and semirings, syntactic ordered monoids, free profinite monoids, equations and identities, varieties and relational morphisms. More information can be found in [1-3, 18, 35, 42, 45]. 1.1 Semigroups and semirings If S is a semigroup, the set P(S) of subsets of S is also a semiring, with union as addition and multiplication defined, for every X, Y ∈ P(S), by XY = {xy | x ∈ X, y ∈ Y } In this semiring, the empty set is the zero and for this reason, is denoted by 0. It is also convenient to denote simply by x a singleton {x}. If k is a semiring, we denote by M n (k) be the semiring of square matrices of size n with entries in k.